来自集合的ItemsControl中项的绑定属性

时间:2016-07-06 20:28:37

标签: c# wpf xaml data-binding itemscontrol

我的理论代码:

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? 

或者不可能像这样绑定吗?

2 个答案:

答案 0 :(得分:1)

芬斯特,

如果您为ProcessScript类中的所有三个属性实现了getter setter属性,那么它应该可以正常工作。

使用datatemplate时 - 表示您将itemscontrol的每个元素的datacontext设置为集合的元素。

所以这里每个Itemcontrol元素都会查看ProcessScript对象,如果该对象具有所有三个属性,你应该看到数据。

答案 1 :(得分:0)

不可能以这种方式做到这一点。您实际上没有设置Binding ...要支持观察集合上的更改,您应该将集合绑定到ItemsControl的ItemsSource属性。 而不是行:

ScriptItemsControl.ItemsSource = PScriptCollection;

试试这个

ScriptItemsControl.ItemsSource = new Binding("PScriptCollection");