我们有一个使用 Template10 的 UWP 应用。有一个显示折扣的文本 block 和文本框。我们希望在 ViewModel.Discount
为 null 时隐藏文本 block 。
在 App.xaml 中我们定义了一个转换器
<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>
在View中我们设置了TextBlock的可见性
Visibility="{x:Bind ViewModel.Discount, Converter={StaticResource HideWhenNullConverter}}"
在 View 模型中:
public class ViewModel : ViewModelBase
{
decimal? _Discount = default(decimal?);
public decimal? Discount
{
get
{
return _Discount;
}
set
{
if (value == 0) value = null;
Set(ref _Discount, value);
}
}
然而,即使 ViewModel.Discount
的值为 null,文本 block 始终可见。我们如何在 ViewModel.Discount
为 null 时隐藏文本 block
最佳答案
正如我尝试使用 Template10's source它应该工作。我怀疑您只是缺少使用 x:Bind
重新定义 Mode,默认情况下是 OneTime。像这样尝试:
Visibility="{x:Bind ViewModel.Discount, Mode=OneWay, Converter={StaticResource HideWhenNullConverter}}"
关于xaml - null 时隐藏 xaml 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42593986/