我正在将DataGrid中的ComboBox绑定到Enum值。我让ComboBox显示正确的值,但我遇到的问题是,当我尝试保存时,如果我使用ComboBox,则不会返回XML。如果我取出ComboBox,那么我的保存工作正常,返回XML并存储记录。
我假设这与我在ComboBox中没有设置Path属性这一事实有关,但是,如果我设置了Path属性,那么我的Enum值不会显示在ComboBox中。
我的Xaml:
<UserControl.Resources>
<ObjectDataProvider x:Key="dataFromEnum"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:TypeExtension Type="local:enumTypes" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</UserControl.Resources>
<DataGrid Grid.Row="3"
Grid.Column="0"
ItemsSource="{Binding Path=StuffList, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Enum Stuff">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
SelectedValuePath="ID" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
SelectedValuePath="ID" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我的班级:
private enumTypes _enumType = new enumTypes();
public enumTypes enumType
{
get { return _ enumType; }
set
{
_ enumType = value;
NotifyPropertyChanged(p => enumType);
}
}
我在SQL表中使用enumType值,需要发送/返回XML。但是因为我没有在任何地方绑定enumType,我认为这就是为什么没有给出XML?
有关如何更改我的ComboBox绑定以显示Enum值和绑定enumType字段以便我的XML可以修复的任何想法?
答案 0 :(得分:0)
您的CellTemplate
不应该是可编辑的,您还需要绑定SelectedItem
,例如
<DataGridTemplateColumn Header="Enum Stuff">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ID}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}"
SelectedItem="{Binding ID}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
(属性应该在PascalCase中,即大写enumType
)