我将以下关系定义为强类型数据集:
让我们假设Window的datacontext绑定到User表的当前行。
我希望绑定一个DataGrid,以便为ConfigOption表中的每个项显示一个复选框列表,其中我们假设ConfigOption_Description是一个字符串值,其中包含要在复选框旁边显示的名称。 / p>
用户在UserConfig表中有一条适用于它们的每个配置选项的记录。配置值(ConfigValue)是一个布尔值。如果表中没有记录,则假定该值设置为false,即用户未启用此选项。
我知道我可以将窗口的数据上下文绑定到当前用户,并使用传递当前用户的UserID的转换器,我可以确定应该为当前用户启用哪个选项(以及哪些复选框)应该检查)。
我想知道是否有一种方法可以定义我的CollectionViewSource:
<Window>
<Window.Resources>
<CollectionViewSource x:Key="cvsUsers" />
<CollectionViewSource x:Key="cvsUserConfig" />
<CollectionViewSource x:Key="cvsConfigOptions" />
</Window.Resources>
<DataGrid DataContext="cvsConfigOptions">
<CheckBox Content="{Binding Path=[ConfigOption_Description]}" IsChecked="????" />
</DataGrid>
</Window>
我知道我可以使用转换器绑定IsChecked,但肯定必须有一种方法来利用表和它们之间已经定义的关系来绑定这些对象。
只是一个假设的抽象例子(不起作用)将是:
<DataGrid>
<Checkbox Content="Option1" IsChecked="CurrentUser.Option1.ConfigValue" />
<Checkbox Content="Option2" IsChecked="CurrentUser.Option2.ConfigValue" />
<Checkbox Content="Option3" IsChecked="CurrentUser.Option3.ConfigValue" />
</DataGrid>