2011-06-24 107 views
0

我將DataGrid中的組合框綁定到枚舉值。我得到的ComboBox顯示正確的值,但我遇到的問題是,當我嘗試保存時,如果我使用ComboBox,則不會返回XML。如果我將ComboBox取出,然後保存工作正常,則返回XML並存儲記錄。組合框綁定到枚舉,同時保留enumType值

我假設這與事實沒有在我的ComboBox中設置Path屬性有關,但是,如果設置了Path屬性,那麼我的枚舉值不會顯示在組合框。

我的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。但是因爲我沒有在任何地方綁定枚舉類型,所以我認爲這就是爲什麼不給XML的原因?

有關如何更改我的ComboBox綁定以顯示兩個Enum值並綁定enumType字段以便我的XML可以修復的任何想法?

+0

有像這樣的問題,負載上SO了。看到這裏:http://stackoverflow.com/questions/2608300/databinding-an-enum-to-a-combobox-in-wpf-mvvm –

+0

是的,有關於wpf枚舉的問題很多,但幾乎所有人都關心1)如何將一個ItemsSource屬性綁定到一個枚舉,以及2)如何將TheEnumsName轉換爲UI中的「Enum's Name」。你的問題非常令人困惑,因爲看起來你正在問這種類型的問題,但實際上你正在談論某種類型的XML(MySql enumType list?不知道,不要MySql)。我強烈建議你[編輯你的問題](http://stackoverflow.com/posts/6467749/edit)來闡明1)enckType是什麼以及它來自哪裏,2)它看起來像什麼。 – Will

回答

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