有清单,要显示的列。我正在使用ListView
以及单元格的数据模板。我的问题是访问都:从模板的行和列。数据模板参数
以下是演示,XAML:
<ListView x:Name="listView" ItemsSource="{Binding Items}">
<ListView.Resources>
<GridViewColumn x:Key="Column" x:Shared="False">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Run Text="{Binding WhatHere}" /> <!-- problem here -->
<Run Text="{Binding Mode=OneWay}" />
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</ListView.Resources>
<ListView.View>
<GridView />
</ListView.View>
</ListView>
,代码:
public partial class MainWindow : Window
{
public List<string> Items { get; } = new List<string> { "1", "2", "3" };
public MainWindow()
{
InitializeComponent();
DataContext = this;
var a = (GridViewColumn)listView.FindResource("Column");
a.Header = "a";
((GridView)listView.View).Columns.Add(a);
var b = (GridViewColumn)listView.FindResource("Column");
b.Header = "b";
((GridView)listView.View).Columns.Add(b);
}
}
会产生
我的目标是有:
a b
a1 b1
a2 b2
a3 b3
可能吗?如何通过列DataTemplate
?事实上,我只想知道当前单元格属于哪一列,但请考虑以下内容:
- 这是简化的情况。
- 实际上,数据模板比较复杂:很多元素都带有绑定,触发器等等。
- 实际上,列相关数据比标题更复杂。
- 列将在与不同的报头运行时动态生成等
- 添加列和在设定
Header
代码隐藏不是问题,DataTemplate
是。
我想用附加属性上GridViewColumn
,但是,这不是在视觉树细胞的父:
难道你不能只绑定到一个类型的实例,该类型对于行索引和列索引都有属性? – mm8
@ mm8,你能解释一下你的意思吗? – Sinatr
'Converter'怎么样?并使用'{RelativeSource Self}'作为参数?那么你将分别访问UIElement和转换器'Grid.GetRow(UIElement)'或'Grid.GetColumn()'? – XAMlMAX