C# 从用户控件中访问主窗口中的用户控件名称

C# 从用户控件中访问主窗口中的用户控件名称,c#,wpf,xaml,C#,Wpf,Xaml,我似乎无法从该用户控件中访问在我的main window.xaml中的用户控件上设置的x:Name属性 this.Name属性为空!可能,这不是我要找的财产() 我尝试在标准InitializeComponent()之后的一个伪行上放置一个调试停止,并深入研究各种基类中的属性,但未找到任何可重新命名的x:Name My MainWindow.xaml如下所示: 这是我的UserControl1.xaml: 以及UserControl1.cs中的代码: public UserCon

我似乎无法从该用户控件中访问在我的
main window.xaml
中的用户控件上设置的
x:Name
属性

this.Name
属性为空!可能,这不是我要找的财产()

我尝试在标准
InitializeComponent()之后的一个伪行上放置一个调试停止UserControl1()
构造函数中进行编码>,并深入研究各种基类中的属性,但未找到任何可重新命名的
x:Name

My MainWindow.xaml如下所示:


这是我的UserControl1.xaml:


以及UserControl1.cs中的代码:

    public UserControl1()
    {
        InitializeComponent();
        this.sup.Content = "label: " + this.Name;
    }

标签应设置为“label:sup”,但this.name为空,因此它只是标签。

如果向用户控件添加按钮,则在调用构造函数后应用x:name属性

<StackPanel>
    <Label x:Name="sup" Content="Label" HorizontalAlignment="Left" Margin="134,146,0,0" VerticalAlignment="Top"/>

    <Button Height="25" Width="100" Click="ButtonBase_OnClick"></Button>
</StackPanel>
这将使用主窗口中提供的名称更新标签

要在不进行交互的情况下更新,请将其添加到usercontrol定义中

Loaded="UserControl1_OnLoaded"
暗藏

private void UserControl1_OnLoaded(object sender, RoutedEventArgs e)
{
    this.sup.Content = "label: " + this.Name;
}

同时显示一些代码。“我看起来像”-你的意思是“我看不见”?在设置之前如何卸载对x:name的访问?我不能使用按钮或其他东西。似乎我必须在主窗口代码中加载UserControl1\u。在usercontrol的代码中是否有这样做的方法?您可以在usercontrol xaml中添加这些方法,我有点假设您会这样做。
private void UserControl1_OnLoaded(object sender, RoutedEventArgs e)
{
    this.sup.Content = "label: " + this.Name;
}