我想绑定每个对象都有 UIType 的列表(即文本框、复选框、组合等)。它具有对象值属性。
我想将此列表绑定到 ItemControl(ListBox,DataGrid..),其中每个项目将具有与每个对象的特定 UIType 对应的单独模板(例如,组合项目将在行中具有组合,复选框项目将具有复选框) ...
显然 prop Value 将绑定到每个项目的相关属性。
实现这一目标的最透明且不太复杂的方法是什么?
银光 5.
编辑:(基于雅各布解决方案的工作代码)
代码:
ObservableCollection<UIType> data;
public MainPage()
{
InitializeComponent();
data = new ObservableCollection<UIType>()
{
new UITypeTextBox() { Value = "Value.." },
new UITypeCheckBox(){ Value = true },
};
lb.ItemsSource = data;
}
public class UIType { }
public class UITypeTextBox : UIType { public object Value { get; set; }}
public class UITypeCheckBox : UIType { public object Value { get; set; } }
xml:
<ListBox x:Name="lb">
<ListBox.Resources>
<DataTemplate DataType="local:UITypeTextBox">
<TextBox Text="{Binding Value}" />
</DataTemplate>
<DataTemplate DataType="local:UITypeCheckBox">
<CheckBox IsChecked="{Binding Value}" />
</DataTemplate>
</ListBox.Resources>
</ListBox>