2010-07-31 3 views
2

У меня есть ListView WPF, где я связать наблюдаемую коллекцию, а ниже кодListView Item Coming по умолчанию выбирается первый элемент в списке

  <ListView Name="WOListView" IsSynchronizedWithCurrentItem="True" 
          DataContext="{Binding AllItems}" 
          ItemsSource="{Binding }" 
          SnapsToDevicePixels="True" Grid.IsSharedSizeScope="True" 
          customEvents:DoubleClickEvent.HandleDoubleClick="true" 
          customEvents:DoubleClickEvent.TheCommandToRun="{Binding Path=ItemCommand}" 
          BorderThickness="0" > 

Здесь у меня есть два вопроса

1) Не знаю, почему, я всегда получаю элемент, выбранный при загрузке списка, и это всегда первый элемент, который я связываю.

2) Выбранный элемент обычно показывают в синий цвет по умолчанию, но когда я нажимаю из стороны в ListView, а не отменив item.It показывает seleceted деталь как серый цвет

ответ

2

Для 1) : Это связано с IsSynchronizedWithCurrentItem = "True". Если вы хотите использовать функцию IsSynchronizedWithCurrentItem, вы, возможно, захотите повлиять на CurrentItem. Используйте следующий код, чтобы сделать это ...

var dv = CollectionViewSource.GetDefaultView(yourObservableCollection); 
dv.MoveCurrentTo(/* here your desired selection */); 

... см here для получения дополнительной информации.

Для 2): это поведение по умолчанию ListView (и других ListControls). Если в элементе управления списком больше нет фокуса, выбранные элементы отображаются серым цветом. Это делается для визуализации того, какой элемент управления имеет фокус (а какой контроль не имеет).

Если вы хотите изменить выбор-поведение, так или иначе, поместите следующую разметку в ListView

<ListView.Resources> 
    <Style TargetType="ListViewItem"> 
     <Style.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/> 
      <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green"/> 
     </Style.Resources> 
    </Style> 
</ListView.Resources> 

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

+0

@HCL первое решение действительно отлично для меня, спасибо за это. Есть ли возможность обойти вторую. – crazy9

+0

@ crazy9, см. Мое обновление – HCL

+0

oo ya, который работал на меня для второго вопроса. Спасибо за код, но за первый вопрос, если я удалю Issyndronisewithcurrentitem = true, который не обновляет список, который создается позже .. и многие из функциональных возможностей, которые работали до. прекратили работу – crazy9

Смежные вопросы