Выбор элемента текстового поля в списке не изменяет выбранный элемент списка - PullRequest
43 голосов
/ 17 марта 2009

У меня есть список wpf, который отображает список текстовых полей. Когда я нажимаю на Textbox, выбор Listbox не меняется. Я должен нажать рядом с TextBox, чтобы выбрать элемент списка. Нужно ли установить какое-либо свойство для Textbox для пересылки события click в Listbox?

Ответы [ 14 ]

0 голосов
/ 28 июня 2012

Попробуйте этот код:

foreach (object item in this.listBox1.Items) {
    if (textbox1.text.equals(item.toString())) {
        //show error message; break
    }
}
0 голосов
/ 26 марта 2009

Вы не очень конкретны в своей исходной ситуации. Но я предполагаю, что вы используете DataBinding и ItemTemplate. Это imho простой способ сделать это, а также, если ваш новичок в этой теме. Это должно работать:

<ListBox ItemsSource="{Binding someDataCollection}" Name="myListBox">
   <ListBox.ItemTemplate>
      <DataTemplate>
         <TextBox Text="{Binding datafield}" Tag="{Binding .}"
                  GotFocus="TextBox_GotFocus"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
   myListBox.SelectedItem = (sender as TextBox).Tag; /* Maybe you need to cast to the type of the objects contained in the collection(bound as ItemSource above) */
}
0 голосов
/ 20 марта 2009

Я не совсем уверен, что вы захотите установить выделение напрямую, как описано в предыдущем ответе, потому что я думаю, что это нарушит множественный выбор и некоторые другие сценарии.

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

<Button ClickMode="Pressed" Focusable="False">
<Button.Template>
    <ControlTemplate>  // change the template to get rid of all the default chrome 
        <Border Background="Transparent"> // Button won't be clickable without some kind of background set
            <ContentPresenter />
        </Border>
    </ControlTemplate>
</Button.Template>
<TextBox />

0 голосов
/ 17 марта 2009

Listbox обрабатывает выбор элемента, но не знает о фокусе текстового поля, встроенного в него. Если вы хотите изменить выбор всякий раз, когда текстовое поле получает фокус ввода, вам нужно изменить выбор списка вручную, afaik.

...