我将以下关系定义为强类型数据集:
让我们假设 Window 的 datacontext 绑定到 User 表的当前行。
我想绑定一个 DataGrid,以便为 ConfigOption 表中的每个项目显示一个复选框列表,我们假设 ConfigOption_Description 是一个字符串值,其中包含要在复选框旁边显示的名称。
对于适用于他们的每个配置选项,用户在 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>