2014-03-12 26 views
5

我需要在列表框項目添加功能,用戶可以通過點擊每個單獨的項目中選擇的項目,也可以不使用shift +點擊來選擇一系列列表中的項目的列表框項功能。SHIFT +點擊使用WPF

<ListBox ItemsSource="{Binding ItemFields, Mode=TwoWay}" 
     VerticalAlignment="Stretch" HorizontalAlignment="Left" 
     Margin="16,156,0,34" Name="fRListbox" Width="499" >     
    <ListBox.ItemContainerStyle>        
     <Style TargetType="{x:Type ListBoxItem}"> 
      <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/> 
      <EventSetter Event="PreviewMouseLeftButtonDown" Handler="reportDatagrid_MouseDown"/>        
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 

和xaml.cs我寫了下面的代碼:

private void ListItem_MouseClick(object sender, MouseButtonEventArgs e) 
{ 
    if ((e.LeftButton == MouseButtonState.Pressed) && Keyboard.IsKeyDown(Key.RightShift)) 
    { 
     fRListbox.SelectionMode = SelectionMode.Extended; 
    } 
    else if ((e.LeftButton == MouseButtonState.Pressed) && Keyboard.IsKeyDown(Key.LeftShift)) 
    { 
     fRListbox.SelectionMode = SelectionMode.Multiple; 
    } 
    else if (e.LeftButton == MouseButtonState.Pressed) 
    { 
     fRListbox.SelectionMode = SelectionMode.Multiple; 
    } 
} 

但是按住Shift點擊功能不能正常工作。 我是新來的WPF任何人都可以引導我。

回答

5

如果你感到快樂,爲用戶通過按住Ctrl鍵不放單擊個別項目(如Windows Explorer和幾乎所有其他的類型的列表),然後設置SelectionModeExtended是實現單一的最簡單方法,當選擇項目使用CtrlShift鍵進行多項選擇。

<ListBox ItemsSource="{Binding ValuesView}" SelectionMode="Extended" /> 
+1

雅我已經嘗試過這一點,但並不通過單擊每個項目individually.I既需要選擇模式.PLS服務幫助選擇項目的目的。 – suu

+1

爲用戶提供他們期望的用戶界面,而不是您認爲他們應該擁有的用戶界面。所有用戶在選擇列表中的非連續項目時都會盡早學習使用Ctrl鍵 - 如果您讓列表做了不同的事情,他們會恨你的應用程序強制它們與其他應用程序的工作方式不同。 –

+1

我需要兩個功能,因爲之前的選擇模式是「多個」,這是做單個項目的點擊選擇,但用戶端的要求是有移位+點擊以及這樣可以緩解系列選擇項目。 – suu