Получить имена элементов управления в коде после нажатия, wpf - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть usercontrol, и я хочу получить имена кликов управляющего пользователя на этом usercontrol.

Usercontrol xaml приведен ниже:

<Grid Name="Grid1">
 <ListView Name ="ListView1">
  <listbox.resources>
   <Datatemplate>
     <Togglebutton Name="Button1">
     </Togglebutton>
   </Datatemplate>
  </listbox.resources>
 </Listview>
 <Border Name="Border1">
 <ContentControl>
 </ContentControl>
 </Border>
</Grid>

Теперь в своем коде я написал:

this.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(mouseclicked);

private void mouseclicked(object sender, MouseButtonEventArgs e)
    {
        var source = e?.OriginalSource as FrameworkElement;
        if (source != null)
        {
            var parent = source.Parent as FrameworkElement;
            string name = string.Empty;
            if (parent != null)
            {
                name = parent.Name;
            }
            else
            {
                name = source.Name;
            }

            //If clicked outside the usercontrol, then usercontrol should close down
            if (!(name.Contains("Border1") || name.Contains("Grid1"))) //very strange values sometimes null or empty
            {
                //then do something
            }
        }
    }

Как я могу получить имена элементы управления, используемые в моем Usercontrol в codebehind ?

1 Ответ

0 голосов
/ 26 апреля 2020

Вы дали сетке, границе и списку имя в XAML. К этому вам следует обратиться в codebehind и проверить в событии mouseclicked , над каким элементом находится мышь.

private void mouseclicked(object sender, MouseButtonEventArgs e)
{
    if (ListView1.IsMouseOver && Grid1.IsMouseOver)
    {
        MessageBox.Show("List view clicked");
    }

    if (Border1.IsMouseOver && Grid1.IsMouseOver)
    {
        MessageBox.Show("Border1 clicked");
    }

    if (Grid1.IsMouseOver)
    {
        MessageBox.Show("Grid1 clicked");
    }            
}

Это может быть не лучшим, но может сработать, чтобы получить имена контролирует, что пользователь нажал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...