我将TextBox的Text属性绑定到TextValue属性。像这样:
<TextBox DataContext="{Binding SelectedDocument}" Text="{Binding Path=Description.TextValue" />
数据绑定没有问题 - 它可以双向工作。但是为了使绑定工作,WPF可能每次都要在SelectedDocument中点击Description属性来检索CellContent对象:
public CellContent Description
{ get; set; }
(我的代码中此属性更复杂。)然后 WPF可以到达实际的CellContent对象内部并获取/设置TextValue。
问题:描述属性永远不会被命中。看起来WPF正在绕过它,并且已经创建了与Description对象内部的TextValue属性的直接连接。 我想每次点击描述获取器和设置器,以便我可以在那里执行一些额外的代码。
我该怎么做?
答案 0 :(得分:2)
如果您希望在更改子项的属性时将Document标记为脏,则可以订阅该子项的PropertyChanged
事件。
我假设您的CurrentDocument看起来像这样。
public class Doc
{
public Doc()
{
_description = new CellContent();
// subscribe to changes in child
_description.PropertyChanged += DescriptionChanged;
}
private void DescriptionChanged(object sender, PropertyChangedEventArgs e)
{
Debug.Write($"I'm a dirty dirty document. Property {e.PropertyName} has changed");
}
private CellContent _description;
public CellContent Description
{
get
{
Debug.Write("I assure you this is called every time a getter of the child properties is called");
return _description;
}
// If you have a setter, don't forget to -= unsubscribe and resubscribe += after changing
}
}
答案 1 :(得分:0)
每次更改PropertyChanged
属性时,请尝试为“描述”引发TextValue
事件。