C# 从主窗口更新用户控件
首先,在主窗口中查看此代码C# 从主窗口更新用户控件,c#,wpf,C#,Wpf,首先,在主窗口中查看此代码 <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> 我创建了一个用户控
<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
例如,在用户控制右侧面板中有一个TextBlock名称TextBlock。
然后,我想更新TextBlock,我在主窗口中,我必须调用rightPanel.TextBlock.Text=“…”
所以我认为这不是一个好方法,因为如果我在另一个类中,那么我不能返回MainWindow来更新这个文本块,也不能调用方法(静态或非静态)来更新MainWindow或RightPanel。还有一个原因,我认为它不好,任何时候你必须在主窗口进行交互,相反,我认为我们应该直接将消息发送到右面板
如果我的英语不够清晰,请帮助我,谢谢并原谅我 您可以向
RightSideContent
用户控件添加依赖项属性来处理文本。这将允许您直接从主窗口的xaml绑定到它
然后,RightSideContent
用户控件可以将textblock.Text
绑定到该依赖项属性,显示其中的内容。您可以创建一个名为“Text”的控件,然后将其绑定到主窗口的DataContext上的属性
假设您没有遵循MVVM模式,那么MainWindow.cs中会有一些属性,即代码隐藏。例如:
private string _rightSideText = string.Empty;
public string RightSideText
{
get { return _rightSideText; }
set
{
_rightSideText = value;
OnPropertyChanged("RightSideText");
}
}
这假设您已经在主窗口上实现了INotifyPropertyChanged
然后,在主窗口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>
这假设您已经添加了dependency属性
完成后,只要在需要更改文本时设置“RightSideText”