xaml - null 时隐藏 xaml 元素

标签 xaml uwp template10

我们有一个使用 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/

相关文章:

c# - 虚拟化不改变新可见项目的属性

c# - 取消调用事件的异步方法

c# - 在 Windows 10 中共享目标 Universal Apps Template10 方法

c# - 在 Windows Phone 应用程序中按下后退按钮导航到后退两页

c# - xaml 中带有 TreeViewItems 的 ListView

c# - 每个字典条目必须有一个关联的键

c# - WPF DataGrid SelectionChanged 和按钮单击

c# - UWP 使用 JSON 数据创建列表

template10 - 将 Microsoft.Xaml.Behaviors.Uwp.Managed 更新到版本 1.1.0 会中断 Template10 也 Template 不会通过 windows store cert

c# - 模板 10 多窗口