2013-06-04 43 views
0

如何实现以下目标:条件绑定不使用转换器

<ComboBox 
IsEnabled="{Binding bVisibilty = AnotherCollection.Count > 0 ? true:false}"/> 

我可以使用一个转换器,它会被转换计数boolen,但有比无处不矫枉过正转换器做的更好的方法。

+0

看起来不错。一个转换器,它接收一个Collection,并从mvvm中的Count属性 –

+0

返回一个布尔值,把这个给虚拟机并且有一个bool来查看可见性 – Viv

+1

为什么downVote? – Simsons

回答

3

您可以使用样式触发器,像这样:

<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> 

显然AnotherCollection需要有一个ObservableCollection这样的UI将被通知每次项目被添加\删除它

+0

只要实现了'INotifyPropertyChanged',就不必是'ObservableCollection'。 –

2

你可以绑定到您的视图模型属性,并把布尔和INPC逻辑视图模型