手动将数据重新绑定到WPF ContentControl

时间:2011-12-19 14:44:45

标签: wpf

我正在尝试手动将数据重新绑定到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();

但它似乎不起作用,我错过了什么?

1 个答案:

答案 0 :(得分:1)

如果Property1在更改时未引发更改事件,则TextBox不知道数据已更改并更新。

制作MyModel类工具INotifyPropertyChanged,并在PropertyChanged更改时提升Property1事件,并且它会起作用。

此外,您不需要明确告诉WPF ContentControl.Content已更改,因为它没有。它仍然指向相同的MyModel对象。