WPF绑定复选框内容和IsChecked到不同的列表

时间:2013-08-08 16:46:04

标签: wpf vb.net xaml multibinding

我遇到将多个属性绑定到单个控件的问题。我有两个名为UserList和GroupList的列表。我正在尝试显示系统中所有组的复选框的ListView。 UserList对象包含基于其所属组的ID的整数列表。如果UserList对象包含groupList中组的ID,我想要检查复选框。

例如,GroupList可能包含ID 1,2,3,4。虽然UserList有一个ID为1和3的列表。我因此选中了复选框1和3,但未选中2和4。

要做到这一点,我需要同时绑定到两个不同的属性,并且可能有某种转换器。我对这个东西很陌生,所以我有点不知道接下来会尝试什么。这是我目前得到的 -

<ListView Name="ListBox1"
Grid.Row="1"
Margin="30,4,30,22"
FontFamily="Segoe UI"
FontSize="14"
ItemsSource="{Binding GroupList,
UpdateSourceTrigger=PropertyChanged}">
<ListView.ItemTemplate>
    <DataTemplate>
        <CheckBox Margin="2"
                  Content="{Binding Name}"
                  IsChecked="{Binding Source={StaticResource UserGroupDataProvider}}" />
    </DataTemplate>
</ListView.ItemTemplate>

显然我缺少某种静态资源,但我不知道该怎么办。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

嗯,经过一系列研究后,我最终使用了一个值转换器。我做了它OneWay所以它只转换,但不转换回来 - 这是我使用的代码

    <CheckBox.IsChecked>
        <MultiBinding Converter="{StaticResource CollectionToBoolConverter}" Mode="OneWay">
            <Binding Path="ID" />
            <Binding ElementName="Me" Path="User.GroupList" />
        </MultiBinding>
    </CheckBox.IsChecked>

其中ElementName = Me被指定为我正在使用的表格顶部。

希望这有助于其他人。