【问题标题】:how to bind integer value of enum to datagridtextcolumn in wpf如何将枚举的整数值绑定到wpf中的datagridtextcolumn
【发布时间】:2017-10-10 16:00:02
【问题描述】:

我想将 Enum int 值绑定到 datagridtextboxcolumn。 我使用下面的代码

public enum Enm_Purchase_Ret : short
{
    Purchase = 1,
    Sale = 2,
    Return = 3
}


public class Vm_Purchase : INotifyPropertyChanged
{
    private Enumitem EnumItem = new Enumitem { Enm_Purchase_Rets = Enm_Purchase_Ret.Purchase };
    public Vm_Purchase()
    {

    }
    public class Enumitem
    {
        public Enm_Purchase_Ret Enm_Purchase_Rets { get; set; }

    }

    public Enumitem TestenumClass
    {
        get { return this.EnumItem; }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] string PropertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new 
            PropertyChangedEventArgs(PropertyName));
        }
    }
}

在 XAML 中

 <DataGridComboBoxColumn Header="Value" ItemsSource="{Binding Source={StaticResource GetEnumValues}, UpdateSourceTrigger=PropertyChanged}" Width="100"
             SelectedItemBinding ="{Binding Enm_Purchase_Rets, Mode=TwoWay}" />


            <DataGridTextColumn Binding="{Binding xxx}" Header="Enum Id" Width="80" />

这里我想绑定枚举值,即。 xxx位置的1,2,3等

由于我对 wpf 不太熟悉,请帮助如何绑定它。

谢谢。

【问题讨论】:

    标签: wpf enums datagrid


    【解决方案1】:

    DataGridTextColumn 显示ToString() 方法调用的结果。可以通过使用格式为“D”的 ToString 来获取枚举的数值。要通过绑定获得相同的结果,请添加 StringFormat:

    Binding="{Binding Path=Enm_Purchase_Rets, StringFormat='\{0:D\}'}"
    

    【讨论】:

    • 我试过这样
    • 但我在 DataGridTextColumn 中没有任何价值。
    • @babucr,请提供有关您的视图模型的更多详细信息。我的建议应该适用于任何 enum 属性 - 确保 Path 使用视图模型中正确的属性名称。 DataGrid的DataContext和ItemsSource是什么? DataGridTextColumn 是否在没有 StringFormat 的情况下显示枚举名称/任何内容? (如果不是 - 它是不正确的绑定路径)
    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2011-07-03
    相关资源
    最近更新 更多