ListBox выбирает более одного элемента при его перетаскивании - PullRequest
2 голосов
/ 04 августа 2011

У меня есть ListBox с 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, он отменяет выбор другого в этой группе, это нормально.

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

Может быть несколько способов изменить это поведение.

  1. Мне не нужно прокручивать список вверх и вниз, поскольку я покажу только столько элементов, сколько уместится на экране. так что, возможно, такое поведение можно отключить.

  2. Возможно, обратный вызов может произойти при прокрутке ListBox, и что-то может отключить выделение при перетаскивании.

  3. DataContext для списка имеет List <>, поэтому есть способ изменить установщик моей переменной Selected в моем List <>, чтобы он сбрасывал другие значения в этом списке.

1 Ответ

1 голос
/ 04 августа 2011
  1. Установите для ScrollViewer.VerticalScrollBarVisibility значение «Отключено» для элемента ListBox.

  2. В событии SelectionChanged установите SelectedIndex в -1

  3. Вы можете очистить все остальные значения в ItemsSource в событии SelectionChanged.

...