Связанный с данными WPF ListView / ListVBox не будет выбран, если список содержит только один элемент - PullRequest
2 голосов
/ 20 февраля 2010

Так что это довольно загадочно. У меня есть привязка данных ListBox (или ListView, это происходит с обоими), и если в ней более двух элементов, выбор работает - я получаю синюю полосу выделения, и элемент выглядит выделенным. Если у меня есть только 1 элемент, выбор не работает - я не получаю синюю полосу выделения, но все события выбора запускаются как обычно. Это ошибка в WPF? Или я просто сумасшедший?

Вот как я настраиваю свою ListBox:

    <ListView x:Name="plotListBox"
             DockPanel.Dock="Bottom"
             ItemsSource="{Binding Path=Plots}"
             SelectedItem="{Binding Path=SelectedPlot, Mode=TwoWay}"
             SelectionMode="Single"
             ScrollViewer.CanContentScroll="False"/>

Кто-нибудь еще сталкивался с чем-то подобным? Этот пост , кажется, описывает подобную проблему, но я не могу найти ничего в ответах, которые, я думаю, помогли бы моей ситуации.

Ответы [ 3 ]

1 голос
/ 22 февраля 2010

У меня никогда не было этой проблемы раньше. Я просто использовал ваш XAML (но со статическим массивом) в kaxaml, и он работал нормально. Затем я вставил его в новый проект WPF в VS2008, и это было прекрасно. Вот мой код:

публичный частичный класс Window1: Window { public ObservableCollection Plots {get; задавать; }

public Window1()
{
    Plots = new ObservableCollection<string>();
    InitializeComponent();
    this.DataContext = this;
    Plots.Add( "hello");
    //Plots.Add( "world");
}

}

просто наличие одного элемента в ObservableCollection не нарушало выбор.

1 голос
/ 20 февраля 2010

Попробуйте поставить IsSynchronizedWithCurrentItem="True" on the ListView

0 голосов
/ 01 марта 2010

Ух, виновник был ScrollViewer.CanContentScroll="False". Все работало нормально, когда я вытащил это.

...