【问题标题】:Binding datacontext of usercontrol to mainwindow将用户控件的数据上下文绑定到主窗口
【发布时间】:2015-06-24 04:06:18
【问题描述】:

我有一个位于 MainWindow 内的 UserControl。 UserControl 运行查询并在其中填充某些 TextBlock。我还想从相同的返回数据填充 MainWindow 中的 TextBlock。

如何将 MainWindow 数据绑定到 UserControl?我试过这个:

<MainWindow DataContext="{Binding Path=DataContext, ElementName=UserControlName}">

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: wpf xaml user-controls


    【解决方案1】:

    这是一个简单的工作示例。

    UserControl XAML 只包含一个双向绑定文本框。相对源的东西比你需要的更冗长,你可以在上面设置一个数据上下文,但这只是为了明确属性的来源:

    <TextBox x:Name="ucTextBox" 
             Text="{Binding Path=UcText, 
                            RelativeSource={RelativeSource AncestorType={x:Type local:UserControl1}}, 
                            Mode=TwoWay, 
                            UpdateSourceTrigger=PropertyChanged}" />
    

    后面的用户控制代码声明了一个依赖属性,或者,如下所示,一个实现 INotifyPropertyChanged 的​​常规属性:

    private string _ucText;
    public string UcText
    {
        get { return _ucText; }
        set
        {
            _ucText = value;
            OnPropertyChanged("UcText");
        }
    }
    

    然后,MainWindow XAML 将它自己的文本块设置为用户控件中文本框的文本属性,如下所示:

    <StackPanel Orientation="Vertical">
        <TextBlock Text="{Binding Path=UcText, ElementName=uc1}"/>
        <local:UserControl1 x:Name="uc1" />
    </StackPanel>
    

    MainWindow 代码隐藏中不需要任何额外内容。

    这会产生一个文本框(在用户控件中),当您在其中键入时,它会更新主窗口上的文本块。

    【讨论】:

      猜你喜欢
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多