我創建了一個具有ListControl的自定義UserControl。XAML:如何將元素綁定到屬性名稱是動態的,可以在不同的地方有不同的名稱
<UserControl>
<UserControl.Resources>
<Style TargetType="ItemsControl">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<simple:TrackItem />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<ItemsControl ItemsSource="{Binding ElementName=Root, Path=ItemsSource}"/>
</UserControl>
我也創建這個自定義用戶控件一個DependencyProperty並綁定列表控件的的ItemsSource這個的DependencyProperty。
public partial class TracksList : UserControl
{
public TracksList()
{
InitializeComponent();
}
public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register(
"ItemsSource", typeof(IEnumerable), typeof(TracksList), new FrameworkPropertyMetadata(default(IEnumerable)));
public IEnumerable ItemsSource
{
get { return (IEnumerable) GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
}
我覆蓋ItemsControl的ItemTemplate。這個ItemTemplate有兩個TextBlock元素,所以這個TextBlocks需要項目DataType的名字來將他們的Text值綁定到屬性。
<TextBlock Text="{Binding "????????"}"/>
<TextBlock Text="{Binding "????????"}"/>
而不是「???????」我想動態地設置此屬性的名稱 - 通過自定義UserControl中的自定義字符串Property。
[這是不工作的代碼,我刪除不需要的部分,使其更具有可讀性]
你可以在你打算綁定什麼的基礎上增加一些細節?還有一點關於項目模板中有什麼的代碼等 –
IEnumerable數據類型它有點模糊,因此,很難從它獲得特定的位置。你能告訴使用你將綁定到「ItemsSource」的數據類型嗎? –
是否要在ItemsSource中顯示每個項目的*每個屬性?或者只是一些屬性?你的代碼將如何決定要顯示哪些屬性? –