4
我有ListView
與同一列中的不同單元格(通過使用DataTemplateSelector
實現)。這是很簡單的例子:動態綁定 - 根據列解析屬性名稱
<ListView ItemsSource="{Binding Items}">
<ListView.Resources>
<l:ResultsSelector x:Key="result1">
<l:ResultsSelector.TemplateResult>
<DataTemplate>
<TextBlock Text="{Binding Result1}"/> <!-- how to make this dynamic? -->
</DataTemplate>
</l:ResultsSelector.TemplateResult>
...
</l:ResultsSelector>
...
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Result1" CellTemplateSelector="{StaticResource result1}"/>
<!-- would be nice to use same selector for all columns -->
<GridViewColumn Header="Result2" CellTemplateSelector="{StaticResource result2}"/>
<GridViewColumn Header="Result3" CellTemplateSelector="{StaticResource result3}"/>
...
</GridView>
</ListView.View>
</ListView>
視圖模型:
private ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
get { return _items; }
set
{
_items = value;
OnPropertyChanged();
}
}
public class Item: NotifyPropertyChangedBase
{
public string Result1 {get; set;}
public string Result2 {get; set;}
public string Result3 {get; set;}
...
}
問題:ResultSelector
是所有的結果列相同(也有其他列),唯一的區別是名稱綁定屬性:列 「結果1」 這是Result1
,IsResult1
等,爲 「結果2」 - Result2
,IsResult2
等
目的:我想定義選擇器只是一次(正如我前面所說,這是非常簡化的版本,所以複製/粘貼「result1」選擇器定義N
時間是非常糟糕的選擇,特別是如果我必須稍後改變某些東西)並以某種方式將其用於所有列。
問題:有沒有辦法組織動態綁定。 動態我的意思是根據列動態解析屬性名稱。
轉換器? UserControl
?想法?
我想你誤解了我的問題。查看選擇器模板之一中的「TextBlock」。它被綁定到'Result1',這沒有問題,它顯示正確的值。問題是避免創建另一個選擇器(在xaml中定義它),其中相同的「TextBlock」將被綁定到例如'Result2'。 – Sinatr
好的,所以這是我發佈的相反情況。代替泛型代碼,您需要一個通用的XAML {綁定結果}? – Ben
是的,其中「Result2」屬性顯示在「Result2」列中的「Result」值。 – Sinatr