绑定集合中 ItemsControl 中的项目 属性
Binding Property of an Item in an ItemsControl From a Collection
我的理论代码:
ScriptContainerUserControl.xaml
<ItemsControl x:Name="ScriptItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<TextBox x:Name="pTB" Text="{Binding PhasePriority}" />
<TextBox x:Name="nTB" Text="{Binding Name}" />
<TextBox x:Name="dTB" Text="{Binding Description}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ScriptContainerUserControl.xaml.cs
public ScriptContainerUserControl() : base()
{
InitializeComponent();
ScriptItemsControl.ItemsSource = PScriptCollection;
}
//PScriptCollecion is of type SynchronizedObservableCollection<ProcessScript>
//ProcessScript has the elements PhasePriority, Name, and Description
上面的代码是否可以确保
ScriptItemsControl[i].dTB.Text = PScriptCollection[i].Description?
或者这样绑定不可以吗?
这样是不行的。您实际上没有设置绑定...要支持观察集合的更改,您应该将集合绑定到 ItemsControl 的 ItemsSource 属性。
而不是行:
ScriptItemsControl.ItemsSource = PScriptCollection;
试试这个
ScriptItemsControl.ItemsSource = new Binding("PScriptCollection");
围墙,
如果您在 ProcessScript class.
中为所有三个属性实现了 getter setter 属性,它肯定会起作用
当您使用数据模板时 - 这意味着您将 itemscontrol 的每个元素的数据上下文设置为您集合的一个元素。
所以这里每个 Itemcontrol 元素都会查看 ProcessScript 对象,如果该对象具有所有三个属性,您应该会看到数据。
我的理论代码:
ScriptContainerUserControl.xaml
<ItemsControl x:Name="ScriptItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<TextBox x:Name="pTB" Text="{Binding PhasePriority}" />
<TextBox x:Name="nTB" Text="{Binding Name}" />
<TextBox x:Name="dTB" Text="{Binding Description}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ScriptContainerUserControl.xaml.cs
public ScriptContainerUserControl() : base()
{
InitializeComponent();
ScriptItemsControl.ItemsSource = PScriptCollection;
}
//PScriptCollecion is of type SynchronizedObservableCollection<ProcessScript>
//ProcessScript has the elements PhasePriority, Name, and Description
上面的代码是否可以确保
ScriptItemsControl[i].dTB.Text = PScriptCollection[i].Description?
或者这样绑定不可以吗?
这样是不行的。您实际上没有设置绑定...要支持观察集合的更改,您应该将集合绑定到 ItemsControl 的 ItemsSource 属性。 而不是行:
ScriptItemsControl.ItemsSource = PScriptCollection;
试试这个
ScriptItemsControl.ItemsSource = new Binding("PScriptCollection");
围墙,
如果您在 ProcessScript class.
中为所有三个属性实现了 getter setter 属性,它肯定会起作用当您使用数据模板时 - 这意味着您将 itemscontrol 的每个元素的数据上下文设置为您集合的一个元素。
所以这里每个 Itemcontrol 元素都会查看 ProcessScript 对象,如果该对象具有所有三个属性,您应该会看到数据。