簡體   English   中英

如何在C#中獲取WPF UserControl的父頁面?

[英]How to get WPF UserControl's Parent Page in C#?

我在類型Page (而不是Window )的uCtrl具有UserControl類型的parentPg 我想在uCtrl類中訪問該parentPg ,以便可以將某些uCtrl的屬性綁定到parentPgControl

就像我們遇到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中) uCtrl類型的UserControl ,然后設置其Property (即IsPrptReady基於父母窗口的) Control ,即txt類型“文本框”的。

我想做同樣的事情,但是在Page不是Window情況下。 我已經看到了很多的問題,像這樣 ,但沒有解決我的問題。 任何幫助將不勝感激。

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>

您鏈接到的問題的第二個答案提供了您需要的答案; 專門使用VisualTreeHelper。

或者,您可以向[Page]類型的用戶控件添加[dependency]屬性,並將該屬性綁定到該控件所在的頁面實例。 就像是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM