使用datatable中定义的选项绑定WPF ComboBox

时间:2012-06-08 09:36:31

标签: wpf xaml

我想做类似于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匹配?

1 个答案:

答案 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来设置和获取值,从而在会话之间保存所选设置。