Nous avons une application UWP utilisant Template10. Il y a un bloc de texte et une zone de texte qui montrent un rabais. Nous souhaitons masquer le bloc de texte lorsque ViewModel.Discount
est null.Masquer l'élément xaml lorsque null
En App.xaml nous avons défini un convertisseur
<T10Converters:ValueWhenConverter x:Key="HideWhenNullConverter" When="{x:Null}">
<T10Converters:ValueWhenConverter.Value>
<Visibility>Collapsed</Visibility>
</T10Converters:ValueWhenConverter.Value>
<T10Converters:ValueWhenConverter.Otherwise>
<Visibility>Visible</Visibility>
</T10Converters:ValueWhenConverter.Otherwise>
</T10Converters:ValueWhenConverter>
Dans la vue nous avons mis la visibilité du TextBlock
Visibility="{x:Bind ViewModel.Discount, Converter={StaticResource HideWhenNullConverter}}"
Dans le ViewModel:
public class ViewModel : ViewModelBase
{
decimal? _Discount = default(decimal?);
public decimal? Discount
{
get
{
return _Discount;
}
set
{
if (value == 0) value = null;
Set(ref _Discount, value);
}
}
Cependant, la textblock est toujours visible même si la valeur ViewModel.Discount
est null. Comment cacher le bloc de texte quand ViewModel.Discount
est nul
Vous pouvez également indiquer que la logique de visibilité est sous la responsabilité de ViewModel. Le dernier UWP peut lier directement la visibilité à un booléen. Imaginez que vous ayez plus tard des règles commerciales supplémentaires, comme un prix maximum. –
@HenkHolterman Nice, merci de mentionner que - j'ai en quelque sorte [manqué ceci] (https://social.technet.microsoft.com/wiki/contents/articles/34846.uwp-compiled-binding-windows-10-anniversary -update.aspx). – Romasz
Dans _14393_, 'Visibility =" {x: Lier ViewModel.Discount.HasValue, Mode = OneWay} "'. –