我将XAML文件中的x:Name分配给可以触发MouseDown事件的对象。 在那种情况下,我想再次获取发件人的x:name-attribute。 我该怎么做?
对象看起来像这样:
<ModelUIElement3D MouseDown="ModelUIElement3D_MouseDown" x:Name="trololo">
答案 0 :(得分:6)
如果我已正确理解您的问题,您可以通过将发件人转发给Name
来访问FrameworkElement
媒体资源。
或者,您可以只使用设计器创建的引用对象,实例名称与您在x:Name
属性中指定的名称相同。
以下内容演示了这两个选项。
private void ModelUIElement3D_MouseDown(object sender, MouseButtonEventArgs e)
{
var element = sender as FrameworkElement;
if (element != null)
{
if (element.Name == "trololo")
{
}
}
// Or
if (sender == trololo)
{
}
}
答案 1 :(得分:0)
基于FrameworkElement的Name属性是标准依赖项属性,用作x:Name的快捷方式(请参阅FrameworkElement.Name Property)。但是,许多依赖项对象不是从FrameworkElement派生的,但它们仍然可以使用XAML附加属性x:Name。要确定x:在XAML中声明的对象的运行时名称不是从FrameworkElement派生的,可以使用GetValue检索对象的附加属性,如下所示:
foreach(var column in gridItem.ColumnDefinitions)
{
var name = column.GetValue(FrameworkElement.NameProperty) as string;
if (name == "IsCheckedColumn")
column.Width = show ? CheckUncheckColumn_VisibleWidth : Column_InvisibleWidth;
else if (name == "DeleteColumn")
column.Width = show ? DeleteColumn_VisibleWidth : Column_InvisibleWidth;
}