【问题标题】:Display enums of selected item in datagrid在数据网格中显示所选项目的枚举
【发布时间】:2013-07-19 21:09:33
【问题描述】:

当用户从我的 WPF 页面上的列表中选择一个项目时,我试图在另一个 DataGrid 中显示该项目的枚举列表:

<DataGrid Grid.Row="1" AutoGenerateColumns="False" IsReadOnly="True" 
    HeadersVisibility="Column"
    ItemsSource="{Binding SelectedAdGroupWithRoles.PrestoRoles}"
    SelectedItem="{Binding SelectedPrestoRole}">                    
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding PrestoRole}" Header="Role" Width="*"/>
    </DataGrid.Columns>
</DataGrid>

PrestoRole 是一个枚举。

我不确定如何设置最终绑定:

<DataGridTextColumn Binding="{Binding PrestoRole}" Header="Role" Width="*"/>

我尝试了一些方法,但 PrestoRole 名称不会显示。如何让它显示?

在一个完全独立的表单中,我在一个列表框中列出了 PrestoRole 枚举的每个成员:

<ListBox Grid.Row="0" ItemsSource="{Binding Roles}" SelectedItem="{Binding SelectedRole}" Height="auto">

视图模型上的 Roles 属性如下所示:

public List<PrestoRole> Roles

枚举成员在那里显示得很好。我只是无法让它显示在 DataGrid 中。

【问题讨论】:

  • 看来你的问题已经在这个话题中得到解答了:stackoverflow.com/questions/8207607/…
  • 那个链接是用来创建转换器的。我希望我不必这样做。
  • 也许这可以帮助你:link 或者这个:link
  • 谢谢@Steven,但 Adi 的回答解决了我的问题。

标签: c# wpf


【解决方案1】:

这应该可行:

<DataGridTextColumn Binding="{Binding}" Header="Role" Width="*"/>

当您定义一个列时,该列的DataContext 被设置为每一行的当前项,因此您需要做的就是绑定到它。

【讨论】:

  • 完美。简单干净。正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多