有清單,要顯示的列。我正在使用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