Как получить доступ к x: Name-свойству в коде? - PullRequest
2 голосов
/ 22 сентября 2010

Я назначил x: Name в своем XAML-файле объекту, который может вызвать событие MouseDown. В этом случае я бы хотел снова получить атрибут x: name-отправителя. Как мне это сделать?

Объект выглядит так:

<ModelUIElement3D MouseDown="ModelUIElement3D_MouseDown" x:Name="trololo">

Ответы [ 2 ]

6 голосов
/ 23 сентября 2010

Если я правильно понял ваш вопрос, вы можете получить доступ к свойству 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)
    {
    }

  }
0 голосов
/ 21 ноября 2014

Свойство Name на основе FrameworkElement - это стандартное свойство зависимостей, предназначенное как ярлык для x: Name (см. Свойство FrameworkElement.Name ). Однако многие объекты зависимостей не являются производными от FrameworkElement, и, тем не менее, они по-прежнему могут использовать XAML-присоединенное свойство x: Name. Чтобы определить x: Name во время выполнения объекта, объявленного в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...