在弹出窗口

时间:2017-07-18 09:32:37

标签: c# wpf xaml

在XAML中我创建了一个弹出窗口:

<Popup Name="PopupWindow" Placement="Mouse" IsOpen="False" StaysOpen="False" Opened="PopupWindow_Opened">
    <Border Width="100" Height="100" Background="AntiqueWhite">
        <Label Name="myLabel" Content="Hello World!" />
    </Border>
</Popup>

在后面的代码中,在OnMouseClick()事件处理程序中:

var position = e.GetPosition(mainPanel);
PopupWindow.IsOpen = true;

但是我不知道如何获取myLabel的引用以更新值,因为它是直接在XAML中创建的。

2 个答案:

答案 0 :(得分:1)

你可以做一些演员:

Border border = PopupWindow.Child as Border;
Label label = border.Child as Label;
label.Content = "...";

答案 1 :(得分:1)

您可以使用x:Name代替Name,然后像这样引用您的对象

XAML

<Popup Name="PopupWindow" Placement="Mouse" IsOpen="False" StaysOpen="False" Opened="PopupWindow_Opened">
    <Border Width="100" Height="100" Background="AntiqueWhite">
        <Label x:Name="myLabel" Content="Hello World!" />
    </Border>
</Popup>

C#

var position = e.GetPosition(mainPanel);
this.myLabel.Content = position.ToString();

x:Name是一个xaml概念,主要用于引用元素。当您为元素提供x:Name xaml属性时,&#34;指定的x:Name将成为处理xaml时在底层代码中创建的字段的名称,并且该字段包含对该对象的引用&#34; (MSDN)因此,它是设计人员生成的字段,默认情况下具有内部访问权限。

Name是FrameworkElement的现有字符串属性,以xaml属性的形式列为任何其他wpf元素属性。

有关该主题的更多信息:

Differentiate between x:Name and Name in Wpf application