我正在尝试手动将数据重新绑定到ContentControl。
<UserControl.Resources>
<local:MyModel x:Key="myModel" />
<DataTemplate DataType="{x:Type local:MyModel}">
<StackPanel>
<TextBlock Text="{Binding Path=Property1}"></TextBlock>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ContentControl Content="{Binding Source={StaticResource myModel}}" Name="myView">
</ContentControl>
</Grid>
在
背后的代码中MyModel myModel = this.FindResource("myModel") as MyModel ;
myModel.Property1 = "Test";
var bindingExpression = myView.GetBindingExpression(ContentControl.ContentProperty);
bindingExpression.UpdateTarget();
但它似乎不起作用,我错过了什么?
答案 0 :(得分:1)
如果Property1
在更改时未引发更改事件,则TextBox不知道数据已更改并更新。
制作MyModel
类工具INotifyPropertyChanged
,并在PropertyChanged
更改时提升Property1
事件,并且它会起作用。
此外,您不需要明确告诉WPF ContentControl.Content
已更改,因为它没有。它仍然指向相同的MyModel
对象。