gpt4 book ai didi

所有列的 WPF GridView 共享单元格模板

转载 作者:行者123 更新时间:2023-12-04 12:41:47 26 4
gpt4 key购买 nike

我正在尝试创建一个 DataTemplate可以为 GridView 的所有列共享,它的列是动态创建的(通过代码隐藏)。

我想创建 DataTemplate作为 XAML 中的资源,而不是完全在代码隐藏中,但我不知道如何让绑定(bind)正常工作。

以下是我能想到的最接近的(但不起作用):

<DataTemplate x:Key="ListViewCellTemplate">
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type GridViewColumn}}}" />
</DataTemplate>

此模板分配为 CellTemplate每列如下:
BindableDataTable table = this.DataContext as BindableDataTable;

foreach (BindableDataColumn c in table.Columns)
{
GridViewColumn col = new GridViewColumn();
col.Header = c.ColumnName;

col.CellTemplate = this.FindResource("ListViewCellTemplate") as DataTemplate;
v.Columns.Add(col);
}

最佳答案

回答:

在资源中设置 DataTemplate

  <UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="GridViewCellTemplateStyle">
<TextBlock Text="{Binding}">
<TextBlock.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding DataContext.CommandDoubleClick, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"/>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>

创建您的 GridView 并使列继承此数据模板
 <ListView>
<ListView.View>
<GridView>
<GridViewColumn Width="Auto" Header="Column1" CellTemplate="{StaticResource GridViewCellTemplateStyle}"/>
<GridViewColumn Width="Auto" Header="Column2" CellTemplate="{StaticResource GridViewCellTemplateStyle}"/>
<GridViewColumn Width="Auto" Header="Column3" CellTemplate="{StaticResource GridViewCellTemplateStyle}"/>
<GridViewColumn Width="Auto" Header="Column4" CellTemplate="{StaticResource GridViewCellTemplateStyle}"/>
</GridView>
</ListView.View>
</ListView>

此示例向您展示如何在 GridViewColumn 中创建可双击的行。
只需更改您认为合适的 DataTemplate

关于所有列的 WPF GridView 共享单元格模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com