Existe-t-il un moyen de lier un decimal
à une zone de texte WPF et de spécifier un StringFormat
(dans ce cas la devise)? Je l'ai essayé de faire cela avec une propriété dans la vue Modèle, mais le montage dans la zone de texte devient un peu bizarre car il tente d'appliquer la mise en forme après chaque combinaison de touches:Lier la zone de texte avec ReactiveUI et maintenir le format de la devise
public string Moneys
{
get
{
return string.Format("{0:C}", Model.Moneys);
}
set
{
if (decimal.TryParse(value, NumberStyles.Currency, null, out decimal decimalValue))
{
Model.Moneys = decimalValue;
}
}
}
J'ai essayé le réglage de la DataContext
et utilisé les données Xaml contraignant à la place. XAML:
<TextBox Text="{Binding Path=Moneys, StringFormat=C0}" />
code derrière:
this.WhenAnyValue(x => x.ViewModel.Model)
.Subscribe(x =>
{
DataContext = x;
});
Cependant, après avoir changé DataContext
l'{Binding}
ne change pas comme je l'avais prévu à.
Existe-t-il un moyen d'utiliser this.Bind
et de spécifier le StringFormat
? pour moi, ce serait la solution idéale
MISE À JOUR
Dans le cas de réglage du DataContext
, je réalisais que je devrais être assignons à la ViewModel
et quand ViewModel.Model
changements, le modèle reflète les changements Comme il se doit. Voici mon XAML mise à jour:
<TextBox Text="{Binding Path=Model.Moneys, StringFormat=C0}" />
Cependant, je voudrais encore savoir si vous pouvez définir le StringFormat
dans le code derrière l'utilisation ReactiveUI
.