2011-08-04 55 views
2

我有一個列表框與RadioButton裏面的同一個GroupName。列表框正在拖動時選擇多個項目

像這樣:

<ListBox x:Name="AnswerListBox" DataContext="{Binding .}" ItemsSource="{Binding Answers}" Width="auto" HorizontalAlignment="Center" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <local:spriteToggleButton DataContext="{Binding .}" HorizontalAlignment="Center" Text="{Binding text}" Selected="{Binding selected}" Sprites="{Binding Path=DataContext.UISprites, ElementName=questionField}" IsChecked="{Binding selected, Mode=TwoWay}" GroupName="{Binding Path=DataContext.QuestionTitle, ElementName=questionField}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

當我點擊一個單選按鈕,將在該組中取消選擇另一個,這是好的。

但是當我在列表框上滑動時,它會選擇多個RadioButton,這是一種不需要的行爲。

可能有多種方法來改變這種行爲。

  1. 我不需要它上下滾動列表,因爲我只會顯示儘可能多的項目,以適應在屏幕上。所以也許這種行爲可以被禁用。

  2. 當ListBox滾動時可能會產生回調,當拖動完成時可能會禁用選擇。

  3. 在DataContext到ListBox是名單<的>那麼,有沒有辦法改變我的選擇變量的二傳手在我的名單<>,以便將取消設置在該列表中的其他值。

+0

DataContext =「{Binding。}」是完全不必要的。 DataContext默認從父元素或模板繼承它。 –

+0

好的,謝謝,刪除將使我的代碼更清潔。但我仍然有我提到的那個問題。謝謝你的提示。當沒有任何與我的一些DependencyProperties一起工作時,它留下了代碼。 –

回答

1
  1. 設置ScrollViewer.VerticalScrollBarVisibilityListBox元素 「已禁用」。

  2. SelectionChanged情況下,設置SelectedIndex爲-1

  3. 你可以清除在SelectionChanged事件在ItemsSource的所有其他值。

+0

我會嘗試#1,#2不確定,不會停用有效的點擊,而不僅僅是拖動點擊。 #3你的意思是sender.ItemsSource? –

+0

取決於你如何設置你的東西,但最有可能的是,是的。 –

+0

實際上,解決方案是將ClickMode更改爲「press」,這很有意義,因爲通過拖動和放開我可以釋放更多的項目。 –

相關問題