2010-07-31 33 views
2

我有一個WPF的ListView,我在那裏綁定可觀察到的集合,並在下面的第一個項目選擇即將默認是代碼ListView項列表

  <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)選擇的項目通常顯示出藍色默認,但當我點擊出側的列表視圖,而不是取消選擇item.it示出了在顏色公司名片項作爲灰

回答

2

對於1) :這是由於IsSynchronizedWithCurrentItem =「True」。如果你想使用IsSynchronizedWithCurrentItem-feature,你可以想要影響CurrentItem。使用下面的代碼這樣做......

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

...看到here以獲取更多信息。

For 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 2010-08-01 13:42:54

+0

@ crazy9,看到我的更新 – HCL 2010-08-04 07:59:51

+0

oo亞爲我工作的第二個問題。謝謝代碼,但對於第一個問題,如果我刪除 Issyndronisewithcurrentitem = true,這不是更新列表,這是後來做..和許多以前工作的功能......停止工作 – crazy9 2010-08-05 03:19:13