在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中创建的。
答案 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元素属性。
有关该主题的更多信息: