首先,在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。 然后,我想更新TextBlock并且我在MainWindow中,所以我必须调用rightPanel.textblock.Text ="..."

所以我认为这不是一个好方法,因为如果我在另一个Class中,那么我将无法返回MainWindow更新此文本块,也无法对MainWindow或RightPanel调用方法(静态或非静态)更新。 再次,我认为这不是很好的原因,任何时候您都必须与MainWindow进行交互,而我认为我们应该直接将消息发送到RightPanel。

请帮助我,谢谢,如果我的英语不够清楚,请原谅!

===============>>#1 票数:3

您可以将Dependency属性添加到RightSideContent用户控件中以处理文本。 这样您就可以直接从MainWindow的xaml绑定到它。

RightSideContent用户控件可以接着刚才绑定textblock.Text到依赖属性,显示那里的东西。

===============>>#2 票数:2

您可以创建一个名为“ Text”的依赖项属性 ,然后将其绑定到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”即可。

  ask by duykhoa translate from so

未解决问题?本站智能推荐:

1回复

Caliburn Micro不更新用户控件中的依赖项属性

我有一个Caliburn Micro View / ViewModel集合,它使用一个用户控件,该控件的依赖项属性之一绑定到一个位于主视图的ViewModel中的值。 当ViewModel中的值更改时,似乎无法通知用户控件。 ViewModel: 主视图: 用户控制:
1回复

PropertyChanged无法更新用户控件中的UI-通用应用

在我的应用中,我具有一个带有以下XAML段的用户控件 TextBlock绑定的“注释”在我的模型中定义为: 当来自我的用户控件背后的事件处理程序触发事件时,“ Note”属性将更新: 但是,每次我从ComboBox中选择一个项目时,UI都不会更新。 我知道绑定是正确的,
1回复

更新用户控件布局时,将压缩固定网格中的动态行

我在xaml中有一个网格: 我动态创建许多行: 当usercontrol的layout_updated事件触发时,我执行循环以根据控件的高度重新创建行数(清除gVertNums网格中的所有内容之后)。 然后将文本块添加到网格行中,并在其中添加数字(为简单起见,省略了代码)。
2回复

在依赖对象中设置值时,如何更新用户控件?

这是不起作用的部分。 我的依赖项属性的默认值为Entradas.Entero,并且必须在以下行中运行该值: 并且应该在我的用户控件设计中对其进行刷新,但是其中没有任何更改。
2回复

WPF如何刷新用户控件

我尝试了UIElement.InvalidateVisual但没有成功。 我阅读了有关此INotifyPropertyChanged但我不知道它的确切用法,更不用说我在谈论用户控件了,看来我需要对所有控件使用INotifyPropertyChanged 。 我在刷新组合框更改和数据网格更
1回复

“清除”窗口为新用户控件腾出空间?

我通常使用Windows Forms Applications,但我目前需要Windows Presentation Foundation来进行设计。 我需要做的是清除当前打开的窗口并用新用户控件填充它,就好像打开了一个新窗口一样。 简而言之,打开一个新窗口而不实际打开一个新窗口,类似于
1回复

更新用户界面中的2个元素

我有一个WPF应用程序。 我正在使用自动隐藏窗格来托管非常复杂的用户控件。 用户单击窗格时,大约需要10秒钟。 要加载控件,我正在尝试创建一个“正在加载...”窗口,以通知用户应用程序正在运行。 在此等待窗口中,我有一个动画来旋转图像。 我的问题是两天后我仍然无法使轮子旋转,因为我使用
1回复

OnPropertyChanged不会更新用户界面[重复]

这个问题已经在这里有了答案: 如何从列表框 2中 选择的项目中获取特定属性 该窗口包含一个ListBox和一个TextBlock,我的意图是在ListBox中选择更改时更新TextBlock。 我有这个课: 这是ViewModelBase: 风
1回复

如何在WPF中单击按钮单击时刷新用户控件

我在弹出窗口上显示用户控件。 像: 并在网格控件中显示如下: 现在我想在按钮点击上刷新此用户控件的数据,我们将在此页面上显示更新的功能。 如何解决这个问题? 如果可能请指导我?
3回复

如何更新WPF MainWindow上的控件

如何在下面的代码中更新我的label1文本? 我得到一个“调用线程无法访问此对象,因为不同的线程拥有它”错误。 我已经读过其他人使用过Dispatcher.BeginInvoke,但我不知道如何在我的代码中实现它。