gpt4 book ai didi

c# - MVVM 绑定(bind)到属性 == Null

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:09 25 4
gpt4 key购买 nike

我想在属性不为空时显示一些元素。实现这一目标的最佳方式是什么?

以下是我的 ViewModel:

class ViewModel : ViewModelBase
{
public Trade Trade
{
get { return _trade; }
set { SetField(ref _trade, value, () => Trade); }
} private Trade _trade;
}

ViewModelBase继承INotifyPropertyChanged并包含SetField()

以下是贸易类:

public class Trade : INotifyPropertyChaged
{
public virtual Company Company
{
get { return _company; }
set { SetField(ref _company, value, () => Company); }
} private Company _company;
......
}

这是我的 View.xaml 的一部分

    <GroupBox Visibility="{Binding Path=Trade.Company, 
Converter={StaticResource boolToVisConverter}}" />

我希望此组框仅在 Trade.Company 不为空时显示(因此当用户选择公司时)。我是否需要创建一个自定义转换器来检查 null 并返回正确的可见性,或者 .NET 中是否有一个转换器?

最佳答案

而不是使用 BooleanToVisibilityConverter,您需要使用一个不同的转换器(您必须编写一个转换器),如果绑定(bind)值为 null,它将返回适当的可见性值。

像这样:

public class NullValueToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
return (value != null ? Visibility.Visible : Visibility.Collapsed);
}

public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
return null; // this shouldn't ever happen, since
// you'll need to ensure one-way binding
}
}

您需要将 Mode = OneWay 添加到您的绑定(bind)中,因为您将无法进行往返转换。

关于c# - MVVM 绑定(bind)到属性 == Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com