получить имя элемента списка при клике в wpf xaml - PullRequest
1 голос
/ 29 января 2020

Я некоторое время пытаюсь получить отображаемое значение из списка ListBoxItem onClick.

Ive build для тестирования кнопки, которая делает то, что мне нужно из списка:

        private void getDomains_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            string selected = allDomains_ListBox.SelectedItem.ToString();
            MessageBox.Show("Item is available " + selected);


        }
        catch (Exception ex)
        {
            MessageBox.Show("Item is not available");

        }
    }

Но я нужно это поведение, если я нажимаю на ListItem, как:

        private void allDomains_ListBox_MouseLeftButtonDown(object sender, MouseEventArgs e) {
        try
        {
            string selected = allDomains_ListBox.SelectedItem.ToString();
            MessageBox.Show("Item is available " + selected);


        }
        catch (Exception ex)
        {
            MessageBox.Show("Item is not available");

        }
    }

ListItems генерируются с:

        public void enum_AllDomains()
    {
        Forest currentForest = Forest.GetCurrentForest();
        DomainCollection domains = currentForest.Domains;
        foreach (Domain objDomain in domains)
        {
            allDomains_ListBox.Items.Add("somedomain.com");
            allDomains_ListBox.Items.Add("google.com");
        }

    }

Это мой xaml для listBox:

                                        <ListBox Width="200" x:Name="allDomains_ListBox" Grid.Column="1" />

спасибо

1 Ответ

0 голосов
/ 29 января 2020

Вы можете обработать событие PreviewMouseLeftButtonDown для контейнера ListBoxItem:

<ListBox Width="200" x:Name="allDomains_ListBox" Grid.Column="1">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    string clicked = ((ListBoxItem)sender).DataContext.ToString();
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...