我在我的XAML文件中将x:Name分配给一个可以触发MouseDown-event的对象。在这种情况下,我想再次获得发送者的x:name-attribute。我该怎么做?
该对象如下所示:
<ModelUIElement3D MouseDown="ModelUIElement3D_MouseDown" x:Name="trololo">发布于 2010-09-23 04:15:02
如果我没理解错的话,您可以通过将发送者转换为FrameworkElement来访问Name属性。
或者,您可以只使用由设计器创建的引用对象,实例名称与您在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)
{
}
}发布于 2014-11-21 23:35:14
基于FrameworkElement的Name属性是一个标准依赖属性,旨在用作x:Name的快捷方式(请参见FrameworkElement.Name Property。然而,许多依赖对象并不是从FrameworkElement派生的,它们仍然可以使用XAML附加的属性x:Name。要在运行时确定在XAML中声明的不是从FrameworkElement派生的对象的x:Name,可以使用GetValue检索该对象的attached属性,如下所示:
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;
}https://stackoverflow.com/questions/3773063
复制相似问题