我想做类似于Data bound WPF ComboBox with choices defined in XAML?的事情,但我想在数据表SettingValues中指定选项。此数据表将包含三列:SettingType(int),SettingId(int)和Description。我想在组合框中显示某个SettingType(例如1)的所有行的描述。这个SettingType我希望为每个设置进行硬编码。然后选择的SettingId我想要保存在另一个表中,其中包含一列Setting1。
这个问题似乎也做了类似的事情:how to bind ComboBox with DataTable。
首次尝试(代码段):
<ComboBox SelectedValue="{Binding Setting1}" SelectedValuePath="SettingId">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Description}"/>
</DataTemplate>
</ComboBox>
如何指定要使用的表?现在只是指定的列。如何指定仅使用某些行,其中SettingType与某个int匹配?
答案 0 :(得分:1)
解决了使用
从数据表中读取值的问题<ComboBox x:Name="cbSetting1" ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=ValueDescription}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在.cs文件中,使用
将DataContext设置为SettingType == 1的行var dataRows1 = svds.SettingValues.Select("SettingType = 1");
cbSetting1.ItemsSource = dataRows1.AsEnumerable();
其中svds是DataSet。
通过使用cbSetting1.SelectedItem来设置和获取值,从而在会话之间保存所选设置。