首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在代码中访问x:Name-property?

如何在代码中访问x:Name-property?
EN

Stack Overflow用户
提问于 2010-09-23 03:51:01
回答 2查看 4.3K关注 0票数 3

我在我的XAML文件中将x:Name分配给一个可以触发MouseDown-event的对象。在这种情况下,我想再次获得发送者的x:name-attribute。我该怎么做?

该对象如下所示:

代码语言:javascript
复制
<ModelUIElement3D MouseDown="ModelUIElement3D_MouseDown" x:Name="trololo">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-23 04:15:02

如果我没理解错的话,您可以通过将发送者转换为FrameworkElement来访问Name属性。

或者,您可以只使用由设计器创建的引用对象,实例名称与您在x:Name属性中指定的名称相同。

下面演示了这两个选项。

代码语言:javascript
复制
  private void ModelUIElement3D_MouseDown(object sender, MouseButtonEventArgs e)
  {
    var element = sender as FrameworkElement;

    if (element != null)
    {
      if (element.Name == "trololo")
      {
      }
    }

    // Or

    if (sender == trololo)
    {
    }

  }
票数 6
EN

Stack Overflow用户

发布于 2014-11-21 23:35:14

基于FrameworkElement的Name属性是一个标准依赖属性,旨在用作x:Name的快捷方式(请参见FrameworkElement.Name Property。然而,许多依赖对象并不是从FrameworkElement派生的,它们仍然可以使用XAML附加的属性x:Name。要在运行时确定在XAML中声明的不是从FrameworkElement派生的对象的x:Name,可以使用GetValue检索该对象的attached属性,如下所示:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3773063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档