2016-10-22 48 views
0

我有一個uCtrl類型UserControlparentPg類型Page(而不是Window)。我想訪問類中的parentPg,以便我可以將一些uCtrl的財產綁定到parentPgControl如何在C#中獲取WPF UserControl的父頁面?

就像我們遇到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類型的)在UserControl類型的uCtrl並設置其Property(即IsPrptReady)的基礎上Controltxt類型的父母窗口的「文字框」。

我想要做同樣的事情,但在PageWindow情況。 我看到很多問題,如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

您鏈接的問題中的second answer提供了您需要的答案;特別是使用VisualTreeHelper。

或者,你可以一個[依賴]屬性添加到頁面類型的用戶控制和綁定屬性頁面實例的控制之內主持。類似於:

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

我已經看到該答案,但未找到我的解決方案。 @ibebbs您可以根據我的要求分享一段C#代碼嗎? –

+0

此解決方案不起作用。 –

相關問題