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