如何在C#中获取WPF UserControl的父页面?

时间:2016-10-22 07:09:03

标签: c# wpf xaml user-controls

uCtrl类型为UserControl {而不是parentPgPage类型为Window。我想访问parentPguCtrl中的uCtrl,以便将parentPg的{​​{1}}属性绑定到Control Window }。

就像我们遇到public partial class uCtrl : UserControl { Window parentWin; public uCtrl() { parentWin = Window.GetWindow(this); } public bool IsPrptReady { get { //accesing parent Window's control if (((pWin)(parentWin)).txt.Text != "") { return true; } else { return false; } } } }

一样
Window

在上面的代码段中,我在类型pWin的{​​{1}}中获得了父uCtrl(即类型UserControl),然后设置了其Property(即IsPrptReady)基于父母窗口的Controltxt类型' TextBox'。

我想做同样的事情,但是Page不是Window。 我见过很多像this这样的问题,但没有解决我的问题。 任何帮助将不胜感激。

XAML代码如下。

<Page x:Class="Stego.Pages.EnDeCoding"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:Test"
      xmlns:userControls="clr-namespace:Test.UserControls"
      mc:Ignorable="d" 
      d:DesignHeight="600" d:DesignWidth="800"
      >
      <Grid>
           <userControls:uCtrl x:Name="uCtrlName"/>
      </Grid>
</Page>

1 个答案:

答案 0 :(得分:1)

您链接的问题中的second answer提供了您需要的答案;特别是使用VisualTreeHelper。

或者,您可以将[dependency]属性添加到类型为Page的用户控件,并将该属性绑定到控件所在的页面实例。类似的东西:

<Page x:Name="page">
  <local:UCtrl Page="{Binding ElementName=page}"/>
</Page>