gpt4 book ai didi

WPF - 为以编程方式添加的 GridViewColumns 设置 DataTemplate

转载 作者:行者123 更新时间:2023-12-04 17:42:28 25 4
gpt4 key购买 nike

找不到这个问题的答案。

我有一个 WPF ListView 控件,它可以包含不同数量的列。例如,它可以显示客户数据,显示 Id、Name、Email 等列,或者它可以包含产品,显示 ID、名称、价格、NumberInStock、制造商,好吧,你明白了:不同数量的列,不同的名称。

我想要做的是让某些列以不同的方式显示数据。例如,我不想打印"is"或“否”作为列 NumberInStock 的值,而是想显示一个整洁的图像。

如果我有固定数量的列,并绑定(bind)固定名称,我会看到这很容易。只需为该特定列定义一个 DataTemplate,我将使用它来定义我的列的 View 。但是,在我的情况下,我看不到该怎么做。

我对 WPF 很陌生,如果我的方法不好,请原谅 :-) 在我的 XAML 中,我定义了一个 ListView 控件,它几乎是空的。在我后面的代码中,我使用:

    // get all columns from my objects (which can be either a Customer of Product)
foreach (string columnName in MyObject.Columns)
{
GridViewColumn column = new GridViewColumn();
// Bind to a property of my object
column.DisplayMemberBinding = new Binding("MyObject." + columnName);
column.Header = columnName;
column.Width = 50;
// If the columnname is number of stock, set the template to a specific datatemplate defined in XAML
if (columnName == "NumberInStock")
column.CellTemplate = (DataTemplate)FindResource("numberInStockImageTemplate");
explorerGrid.Columns.Add(column);
}

好的,我相信这可以做得更漂亮(如果你有任何建议,请!)但最大的问题是我看不出列中有任何区别。它只显示“NumberInStock”列的文本值。我的 DataTemplate 在 XAML 中定义:
<Window.Resources>
<DataTemplate x:Name="NumberInStock" x:Key="NumberInStock">
<Border BorderBrush="Red" BorderThickness="2.0">
<DockPanel>
<Image Width="24" Height="24" Margin="3,0" Source="..\Images\instock.png" />
</DockPanel>
</Border>
</DataTemplate>
</Window.Resources>

当然,我仍然需要添加根据 NumberInStock 的值显示"is"或“否”图像的功能,但这实际上是第 2 步。我很高兴在我的 ListView 中看到图像和红色边框!

提前致谢,
拉齐

最佳答案

这让我绊倒了一段时间。
DisplayMemberBindingCellTemplate是互斥的。指定 DisplayMemberBinding导致 CellTemplate被忽略。

来自 MSDN :

The following properties are all used to define the content and style of a column cell, and are listed here in their order of precedence, from highest to lowest:

* DisplayMemberBinding
* CellTemplate
* CellTemplateSelector


另见 C# Disciples post对这个。

关于WPF - 为以编程方式添加的 GridViewColumns 设置 DataTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/583737/

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