DoubleClick UserControl в WPF - PullRequest
       1

DoubleClick UserControl в WPF

0 голосов
/ 18 июня 2020

У меня простой UserControl в WPF. Я хочу вызвать несколько свойств при двойном щелчке по UserControl (фамилия, адрес электронной почты и ...). Я использую два экземпляра My UserControl в главном окне. Я пробовал, но он не отвечает на мой Doubleclick. Есть идеи?

usercontrol:

<Grid>
    <Button Content="{Binding FirstName}" ></Button>
</Grid>

код пользовательского управления за

public string FirstName
{
    get { return (string)GetValue(FirstNameProperty); }
    set { SetValue(FirstNameProperty, value); }
}

public static readonly DependencyProperty FirstNameProperty =
    DependencyProperty.Register("FirstName", typeof(string), typeof(UserControl1), new PropertyMetadata(null));

public string LastName
{
    get { return (string)GetValue(LastNameProperty); }
    set { SetValue(LastNameProperty, value); }
}

public static readonly DependencyProperty LastNameProperty =
    DependencyProperty.Register("LastName", typeof(string), typeof(UserControl1), new PropertyMetadata(null));

public string Email
{
    get { return (string)GetValue(EmailProperty); }
    set { SetValue(EmailProperty, value); }
}

public static readonly DependencyProperty EmailProperty =
    DependencyProperty.Register("Email", typeof(string), typeof(UserControl1), new PropertyMetadata(null));

и код главного окна за

public MainWindow()
{
    InitializeComponent();
    UserControl1 uc = new UserControl1()
    {
        FirstName = "adam",
        LastName = "west",
        Email = "adamEmail@mail.com"
    };
    uc.MouseDoubleClick += new MouseButtonEventHandler(showFamily);
    UserControl1 uc2 = new UserControl1()
    {
        FirstName = "james",
        LastName = "anderson",
        Email = "jamesEmail@mail.com"
    };
    uc2.MouseDoubleClick += new MouseButtonEventHandler(showDetails);
    MainStackPanel.Children.Add(uc);
    MainStackPanel.Children.Add(uc2);
}

private void showDetails(object sender, MouseButtonEventArgs e)
{
    var uc = (UserControl)sender;
    if (uc.Content is Grid item)
    {
        // get item.Family
        // get item.Email
        // ...
    }
}

1 Ответ

0 голосов
/ 18 июня 2020

вместо базового класса UserControl приводится к конкретному классу UserControl1 (и рассмотрите возможность переименования его во что-то более значимое). после приведения все свойства будут доступны напрямую:

var uc1 = (UserControl1)sender;
string email = uc1.Email;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...