将CheckBox的IsChecked绑定到方法

时间:2012-03-13 21:08:13

标签: wpf

是否可以将复选框的IsChecked属性绑定到自定义方法?

我创建了一个绑定到对象集合的复选框列表。我有第二个对象集合,它是第一个集合的子集。我想将复选框的IsChecked属性绑定到一个方法,该方法确定对象是否包含在第二个列表中

编辑:

<ListBox Height="auto" HorizontalAlignment="Stretch" Name="listBox" VerticalAlignment="Stretch" Width="auto" ItemsSource="{Binding DataSources}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox Name="CheckBoxZone" 
                              Content="{Binding Name}" 
                              Tag="{Binding Id}"  
                              Margin="0,5,0,0"

                              />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

2 个答案:

答案 0 :(得分:3)

您可以将复选框Command属性绑定到模型上的ICommand。这意味着每次更改检查时都会调用该命令。

示例:

<CheckBox Name="CheckBoxZone" 
                          Content="{Binding Name}" 
                          Tag="{Binding Id}"  
                          Margin="0,5,0,0"
                          Command={Binding CheckBoxChangedCommand}  
                          />

答案 1 :(得分:2)

您可以将IsChecked绑定到数据对象和子集集合,并将MultiBindingmulti-value converter结合使用,转换为bool(或{ {1}} Nullable<bool>)值:

IsChecked

转换器:

<CheckBox.IsChecked>
    <MultiBinding Converter="{StaticResource ObjectInListConverter}" Mode="OneWay">
        <Binding />
        <Binding Source="{StaticResource SubsetCollection}" />
    </MultiBinding>
</CheckBox.IsChecked>