我想做的事:
我有一个 ListBox 绑定到一个ObservableCollection<MyClass>
. 当我选择一个项目时,我想在一些标签中显示它的一些属性。这里的步骤是什么?我已将标签的内容设置为{Binding Path=PropertyName}
. 他们应该是什么DataContext
?
我打算怎么做:我在窗口的代码隐藏中保留了一个私有变量,MyClass selectedItem
我希望所有绑定都指向该变量及其属性。在我看来,在代码逻辑中绑定到具有明确含义的变量,而不是绑定到表示元素的选定项,这似乎更“语义”。
此变量可以并且将在任何给定时间引用不同的 MyClass 实例(我将在 ListBox SelectionChanged 处理程序中更改它)。我希望绑定反映这一点 - 始终指向 selectedItem 当前引用的实例的属性。这会起作用吗?绑定是否总是指向变量指向的对象?或者它会指向我设置绑定时变量正在引用的对象吗?(后者是我的猜测)
我能想到的可能替代方案:绑定到列表框的 SelectedItem 而不是引用它的变量。如果这是要走的路,如何使其类型安全?如何确保绑定知道它不是使用通用 ListBoxItem,而是使用 MyClass 实例,所以它可以看到它的属性?需要这个吗?
有什么建议或解释为什么我很愚蠢,或者有经验的人提供的替代方法?谢谢!