Привязка ComboBox к Enum при сохранении значения enumType - PullRequest
0 голосов
/ 24 июня 2011

Я связываю ComboBox в DataGrid со значениями Enum.Я получаю ComboBox для отображения правильных значений, но проблема у меня заключается в том, что, когда я пытаюсь сохранить, я не получаю XML, если я использую ComboBox.Если я достану ComboBox, то мое сохранение будет работать нормально, XML возвращается и запись сохраняется.

Я предполагаю, что это как-то связано с тем, что я не устанавливаю свойство Path в моем ComboBox, однако, если я устанавливаю свойство 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);
    }
}

Я использую значение enumType в своей таблице SQL и требуется для отправки / возврата XML.Но поскольку я нигде не привязываю enumType, я думаю, что именно поэтому не дается XML?

Есть идеи о том, как изменить привязку ComboBox, чтобы показать значения Enum и связать поле enumType, чтобы мой XML могбыть исправленным?

1 Ответ

0 голосов
/ 24 июня 2011

Ваш 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...