从新窗口绑定WPF

时间:2015-12-17 06:28:06

标签: c# wpf xaml data-binding binding

我需要在更改独立窗口的用户控件后修复绑定。基本上现在我有两个使用ShowDialog()的窗口,我将新窗口连接到新的数据上下文

<Window.DataContext>
    <ViewModels:DatabaseDesignViewModel/>
</Window.DataContext>

但是现在我无法将按钮绑定到根视图的命令,这是主窗口。

这就是我试图解决它而没有运气的方法:

 <MenuItem Header="Go to design mode"
                  Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Views:RootView}}, Path=DataContext.OKCommand}"/>

1 个答案:

答案 0 :(得分:2)

首先 - 我同意丹尼斯,你应该过度思考你的架构,但当然有你的要求的答案:

  1. 创建一个这样的附加属性:

    protected override void OnActivated( EventArgs e )
        {
            base.OnActivated( e );
            this.SetValue( AttachedProperties.ParentWindowProperty, Owner );
        }
  2. 将以下代码添加到子窗口xaml.cs:

    <Window x:Class="WpfApplication3.ChildWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:YourApplicationNamespace"
            x:Name="Self">
        <TextBlock Text="{Binding ElementName=Self, Path=(local:AttachedProperties.ParentWindow).DataContext.SomeProperty}" />
    </Window>
  3. 在您的子窗口xaml中,您可以使用以下绑定语法:

    @interface YourViewController <CustomNavigationControllerDelegate>