WPF / C # Combobox изменяет выбор только при обнаружении щелчка за пределами текстовой области - PullRequest
0 голосов
/ 02 декабря 2010

Итак, у меня есть несколько комбинированных списков в моем приложении WPF, которые не меняют выбор, когда пользователь нажимает на текст элемента комбинированного списка. Для того, чтобы выбрать конкретный элемент, вы должны нажать справа или слева от текста. У меня есть еще один выпадающий список, который отлично выбирается при нажатии на текст. Единственная разница между ними заключается в привязке данных. Комбо-ящики, которые не выбираются при щелчке по тексту, привязаны к коллекции ObservableCollection того или иного типа. В поле со списком, который работает, вставлены статические значения вручную.

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

Вот код для одного из проблемных выпадающих списков:

<ComboBox HorizontalAlignment="Left" Margin="40,160,0,0" VerticalAlignment="Top" Width="132" ItemsSource="{Binding Path=Systems}" SelectedItem="{Binding Path=System}" SelectedIndex="0">
     <ComboBox.ItemTemplate>
         <DataTemplate>
             <ComboBoxItem Content="{Binding Path=Name}"/>
         </DataTemplate>
     </ComboBox.ItemTemplate>
 </ComboBox>

Вот видео о поведении:

http://www.youtube.com/watch?v=D0r1N1ghw-k

1 Ответ

1 голос
/ 02 декабря 2010

enter code here Предположим, мой Combobox определен, как показано ниже

 <ComboBox Name="cmb" Width="200" Height="20" DisplayMemberPath="PersonName" SelectedValuePath="PersonID">

    </ComboBox>

пожалуйста, обратите внимание, я удалил часть шаблона элемента

и моя модель как ниже

public class Person
{
    public string PersonName { get; set; }

    public string PersonID { get; set; }
}

И моя привязка находится в коде позади, этот шаг не нужен, вы можете сделать это в xaml, я просто быстро проверяю столько грязного кода

 public List<Person> source = new List<Person>();
    public MainWindow()
    {
        InitializeComponent();


        for (int i = 0; i < 20; i++)
        {
            source.Add(new Person() { PersonID = i.ToString(), PersonName = "Sau" + i.ToString() });
        }
        cmb.ItemsSource = source;
        this.DataContext = this;
    }

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

это свойство содержимого, которое вызывает некоторые проблемы, но я не уверен на 100% в этом.

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