INotifyPropertyChanged有点麻烦。我实施了很多次,但这种情况有所不同。我想创建以下应用: INotifyPropertyChanged无法正常工作
有多个标签的容器,这必将对实体的不同ObservableCollections。现在我想显示当前(最后)选择的实体的名称。为了实现这一点,我创建了在Window类中创建的DependencyProperty CurrentEntity,并通过TabControls上的SelectionChanged指定当前实体。
private void SelectionChanged(Object sender, EventArgs e)
{
CurrentEntity = e.NewItems[0] as Entity;
}
的TextBlock;其中,在上面的图片,显示VideoA看起来是这样的:
<TextBlock Text={Binding CurrentEntity.Name}" />
现在,每当我选择一个新的选项卡,在TextBlock的文本随之改变。但是,当我更改实体的名称(在Tab中同时绑定到实体的TextBox内部)时,TextBlock中的文本不会更改。我必须选择另一个选项卡,然后返回到更改名称的选项卡,以在TextBlock中查看新输入的名称。基本上,这是我的问题,我希望看到文本更改,而不先选择另一个Tab(是的,我输入新名称后,从Tab中的TextBox取消聚焦)。
有没有人有问题的地方?
我的“架构”这个样子的(或多或少;-)):
你给出的小代码甚至没有意义。您设置CurrentEntity,然后绑定到CurrentElement。这是什么?请只发布你的代码,而不是(或者 - 除了)更好的图表。否则,这只是我们猜测的游戏。 – 2012-03-18 19:32:14
这是CurrentEntity,而不是CurrentElement,谢谢你指出了这一点。我不认为发布几行代码会使事情变得更容易,尤其是因为怀疑它与整体设计有关,而与代码无关。但是,我会尝试粘贴一些有意义的内容,而不需要从3个文件中复制整个代码;-) – 2012-03-19 10:17:31
什么是“TextBox”绑定的外观?我最好的猜测是'CurrentEntity'被绑定到与TabControl'不同的项目副本。你可以通过发现是否存在'CurrentEntity == SomeItemCollection [SelectedIndex]' – Rachel 2012-03-19 13:05:24