下面是我的带有键值对的课程
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
答案 0 :(得分:0)
问题出在您的DataContext
绑定上。
DataContext
中的DataGridTemplateColumn.CellTemplate
是GridExpression
。
这就是为什么只需要更改此行的原因:
<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}">