C# 不使用转换器的条件绑定
我如何实现以下目标:C# 不使用转换器的条件绑定,c#,wpf,mvvm,C#,Wpf,Mvvm,我如何实现以下目标: <ComboBox IsEnabled="{Binding bVisibilty = AnotherCollection.Count > 0 ? true:false}"/> 我可以用一个转换器将计数转换成boolen,但是有没有比到处过度使用转换器更好的方法呢。您可以绑定到ViewModel上的一个属性,并将布尔和INPC逻辑放入ViewModel中您可以绑定到ViewModel上的一个属性,并将布尔和INPC逻辑放入ViewModel
<ComboBox
IsEnabled="{Binding bVisibilty = AnotherCollection.Count > 0 ? true:false}"/>
我可以用一个转换器将计数转换成boolen,但是有没有比到处过度使用转换器更好的方法呢。您可以绑定到ViewModel上的一个属性,并将布尔和INPC逻辑放入ViewModel中您可以绑定到ViewModel上的一个属性,并将布尔和INPC逻辑放入ViewModel中您可以使用类似的样式触发器:
<ComboBox >
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding AnotherCollection.Count}" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
显然,另一个集合需要是ObservableCollection,以便在每次向其添加/删除项目时都会通知UI您可以使用样式触发器,如下所示:
<ComboBox >
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding AnotherCollection.Count}" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
显然,另一个集合需要是ObservableCollection,因此每次添加/删除项目时都会通知UI我觉得不错。接收集合并从mvvm中的计数属性返回布尔值的转换器将该值传递给VM,并让布尔值出现在视图中以获得可见性。我觉得这很好。接收集合并从mvvm中的计数属性返回布尔值的转换器将此值传递给VM,并将布尔值显示到视图中以实现可见性,只要它实现了
INotifyPropertyChanged
,就不必是ObservableCollection
。只要它实现了INotifyPropertyChanged
,就不必是ObservableCollection
实现INotifyPropertyChanged
。