首先,请在MainWindow中查看此代码
<Grid x:Name="LayoutRoot" MinWidth="900" MinHeight="650" RenderTransformOrigin="0.5,0.5">
<local:RightSideContent x:Name="rightPanel" Grid.Column="1" Width="Auto" Height="Auto"/>
</Grid>
我创建一个用户控件名称RightPanel并在MainWindow.xaml中命名它 rightPanel
示例,在用户控件中,RightPanel具有TextBlock名称文本块。
然后,我想更新TextBlock,我在MainWindow,我必须调用rightPanel.textblock.Text ="..."
。
所以我认为这不是一个好方法,因为如果我在另一个类,所以我不能回到MainWindow更新这个文本块,我不能调用一个方法(静态或非方法)到MainWindow或者到RightPanel进行更新。再一次,我认为它不好,任何时候你必须互动MainWindow,而我认为我们应该直接将消息发送到RightPanel。
如果我的英语不够清楚,请帮助我,谢谢并原谅!
答案 0 :(得分:3)
您可以向RightSideContent
用户控件添加依赖项属性以处理文本。这将允许您直接从MainWindow
的xaml。
然后RightSideContent
用户控件可以将textblock.Text
绑定到该依赖项属性,显示其中的内容。
答案 1 :(得分:2)
您可以创建一个名为“Text”的Dependency Property,然后将其绑定到MainWindow的DataContext上的属性。
假设您没有遵循MVVM模式,那么您的MainWindow.cs中会有一些属性,即代码隐藏。例如:
private string _rightSideText = string.Empty;
public string RightSideText
{
get { return _rightSideText; }
set
{
_rightSideText = value;
OnPropertyChanged("RightSideText");
}
}
这假设您已在MainWindow上实施了INotifyPropertyChanged
。
然后,在您的MainWindow XAML中:
<Grid x:Name="LayoutRoot" MinWidth="900" MinHeight="650" RenderTransformOrigin="0.5,0.5">
<local:RightSideContent Text="{Binding Path=RightSideText}" x:Name="rightPanel" Grid.Column="1" Width="Auto" Height="Auto"/>
</Grid>
这假设您已添加依赖项属性。
完成后,无论何时想要更改文本,都需要设置“RightSideText”。