代码之家  ›  专栏  ›  技术社区  ›  Vlad

如何在wpfdatagrid中显示单独表中的特定列?

  •  1
  • Vlad  · 技术社区  · 6 年前

    我有两张桌子,叫T和V。

    表T包含需要在数据网格中显示的所有数据,表V包含关于表T中某一列的数据。所以表T包含表V中的一个外键。

    我想根据表T中的键显示表V中的文本列。

    通过使用

    myDataGrid.ItemSource = List<T> myTableTList 
    

    <DataGrid Grid.Row="0" 
        Name="datesDG" 
        Margin="5, 5, 5, 5"  
        SelectionMode="Extended" 
        IsReadOnly="True" 
        AutoGenerateColumns="False" 
        ItemsSource="{Binding dates, Mode=TwoWay}">
    
        <DataGrid.Columns>
            <DataGridTextColumn Header="Key Column" Binding="{Binding Path=DateKey}" />
            <DataGridTextColumn Header="Publish Date" Binding="{Binding Path=publishDate, StringFormat=\{0:dd.MM.yyyy\}}" />
            <DataGridTextColumn Header="Editing Date" Binding="{Binding Path=editingDate, StringFormat=\{0:dd.MM.yyyy\}}"/>
            <DataGridTextColumn Header="Data Status" Binding="{Binding Path=dataStatusKey}"/>
        </DataGrid.Columns>
    
    </DataGrid>
    

    如果我用T类型的数据填充我的数据网格,我该怎么做呢?

    1 回复  |  直到 6 年前
        1
  •  3
  •   mm8    6 年前

    我是否应该创建一个单独的类,用适当的字段填充它,并列出一个列表,然后将我的网格的ItemSource设置为这个新的数据类型列表?

    对。你基本上会这样做:

    • 创建新类 X 对于要在DataGrid中显示的每列都有一个属性
    • 用从数据库中获得的数据填充它 T V
    • 绑定 ItemsSource 属性到 IEnumerable<X> 视图模型的属性

    注意,如果 具有导航属性,可以直接绑定到此属性:

    <DataGridTextColumn Header="Text" Binding="{Binding Path=V.Text}"/>