【问题标题】:ComboBox Binding to Enum while preserving enumType valueComboBox 绑定到 Enum,同时保留 enumType 值
【发布时间】:2011-06-24 12:24:45
【问题描述】:

我将 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 的任何想法?

【问题讨论】:

  • SO 上已经有很多这样的问题了。见这里:stackoverflow.com/questions/2608300/…
  • 是的,有很多关于 wpf 枚举的问题,但几乎所有问题都涉及 1)如何将 ItemsSource 属性绑定到枚举和 2)如何将 TheEnumsName 转换为“枚举的名称”用户界面。您的问题 very 令人困惑,因为您似乎在问这种类型的问题,但实际上您是在谈论某种 XML(MySql enumType list?不知道,不要 MySql )。我强烈建议您 edit your question 澄清 1)到底 enumType 是什么以及它来自哪里,以及 2)它到底是什么样子。

标签: c# wpf xaml enums combobox


【解决方案1】:

您的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

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多