ItemsControl:将项目的属性绑定到索引?

时间:2011-06-10 08:11:01

标签: c# .net wpf silverlight

我有一组自定义对象,我想将ItemsControl的index属性绑定到我的自定义对象中的一个int属性。我如何在模板中定义这样的绑定?我需要转换器吗?有什么建议?感谢

2 个答案:

答案 0 :(得分:1)

第一个问题:ItemsControl没有Index或SelectedIndex属性。为此,您需要从Selector派生的东西(如ComboBox,ListBox等)。

在这种情况下,您可以使用SelectedValue和SelectedValuePath属性轻松完成您想要的任务。

public class MyCustomObject {
  public int CustomObjectIndex {get;set;}
}

public class ViewModel : INotifyPropertyChanged {
  public IEnumerable<MyCustomObject> Items {get { return something;} }

  // Setting this must raise PropertyChanged.
  public int SelectedIndex {get; set; }
}

<ComboBox ItemsSource={Binding Items}
          SelectedValue={Binding SelectedIndex, Mode=TwoWay}
          SelectedValuePath="CustomObjectIndex" />

答案 1 :(得分:0)

你想做的事情没有意义......

想象一下你有一个带有属性的自定义对象(name,wishedIndex)(wishedIndex作为整数或任何其他魔法来评估所希望的索引)

现在你有几个这样的对象 - &gt;几个希望的指数。

在您的架构中的某个地方,您做出了糟糕的设计选择。如果您发布更多代码,我们可以找到