【问题标题】:Bind Entity with KeyValuePair to Datagrid in WPF将具有 KeyValuePair 的实体绑定到 WPF 中的 Datagrid
【发布时间】:2019-01-02 13:33:43
【问题描述】:

下面是我的键值对类

public class GridExpression
{
    public int Count { get; set; }
    public string Title { get; set; }
    public KeyValuePair<string, double> T1 { get; set; }
    public KeyValuePair<string, double> T2 { get; set; }
    public KeyValuePair<string, double> T3 { get; set; }


}
ObservableCollection<GridExpression> grid = new 
ObservableCollection<GridExpression>();

我想将上面的 ObservableCollection 绑定到一个 Datagrid

如果我们使用 List 而不是 Keypairvalue

就像在 XAML 代码下面一样,我添加了 2 个 T1,一个带有 Grid,另一个带有 Wrappanel 网格至少显示文本块背景的浅绿色

<DataGrid x:Name="_timeframe_Copy" Margin="0,408.152,10,10" AlternatingRowBackground="#FFFFF5D4" AutoGenerateColumns="False"
    HorizontalAlignment="Right" Width="766.167">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Count" Binding="{Binding Count}" />
        <DataGridTextColumn Header="Title" Binding="{Binding Title}" />
        <DataGridTemplateColumn Header="T1">
            <DataGridTemplateColumn.CellTemplate>
                <DataGridTemplateColumn Header="T1" MinWidth="10">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Grid x:Name="brdBroder" VerticalAlignment="Stretch" Margin="1" DataContext="{Binding T1, RelativeSource={RelativeSource AncestorType=Window}}">
                                <TextBlock Text="{Binding Key}" Margin="3,1" Background="Aqua" Foreground="White" />
                                <TextBlock Text="{Binding Value}" Margin="3,1" />
                            </Grid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <DataGridTemplateColumn Header="T1" MinWidth="10">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <WrapPanel x:Name="brdBroder" VerticalAlignment="Stretch" Margin="1" DataContext="{Binding T1, RelativeSource={RelativeSource AncestorType=Window}}">
                                <TextBlock Text="{Binding Key}" Margin="3,1" Background="Aqua" Foreground="White" />
                                <TextBlock Text="{Binding Value}" Margin="3,1" />
                            </WrapPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <DataGridTemplateColumn Header="T2" MinWidth="10">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <WrapPanel x:Name="brdBroder" VerticalAlignment="Stretch" Margin="1" DataContext="{Binding T2, RelativeSource={RelativeSource AncestorType=Window}}">
                                <TextBlock Text="{Binding Key}" Margin="3,1" Background="Aqua" Foreground="White" />
                                <TextBlock Text="{Binding Value}" Margin="3,1" />
                            </WrapPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <DataGridTemplateColumn Header="T3" MinWidth="10">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <WrapPanel x:Name="brdBroder" VerticalAlignment="Stretch" Margin="1" DataContext="{Binding T2, RelativeSource={RelativeSource AncestorType=Window}}">
                                <TextBlock Text="{Binding Key}" Margin="3,1" Background="Aqua" Foreground="White" />
                                <TextBlock Text="{Binding Value}" Margin="3,1" />
                            </WrapPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

我不知道如何绑定键值对和绑定到Datagridtemplate

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    问题在于您的DataContext 绑定。

    DataGridTemplateColumn.CellTemplate 中的DataContextGridExpression

    这就是为什么你只需要改变这一行:

    <WrapPanel x:Name="brdBroder" VerticalAlignment="Stretch" Margin="1" DataContext="{Binding T1, RelativeSource={RelativeSource AncestorType=Window}}">
    

    到:

    <WrapPanel x:Name="brdBroder" VerticalAlignment="Stretch" Margin="1" DataContext="{Binding T1}">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2010-12-16
      • 2017-02-08
      • 2013-07-28
      相关资源
      最近更新 更多