У меня есть ListBox, содержащий ItemTemplate, состоящий из StackPanel, содержащий CheckBox и Label.Я хочу разрешить проверять только один элемент списка одновременно.У меня проблемы с пониманием, как я могу добиться этого.Вот XAML, описывающий список:
<ListBox Grid.Row="0"
Grid.Column="0"
Width="180"
HorizontalAlignment="Left"
x:Name="listboxPlayers"
ItemsSource="{Binding Players}"
SelectedItem="{Binding SelectedPlayer, Mode=TwoWay}"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsDefault, Mode=TwoWay}"
VerticalAlignment="Center"
Checked="CheckBox_Checked"
Unchecked="CheckBox_Unchecked"/>
<Label Content="{Binding Name}"
VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Игрок определен так:
public class Player
{
public string Name { get; set; }
public bool IsDefault { get; set; }
}
Мой список Players
определен так:
public ObservableCollection<Player> Players { get; private set; }
Мой SelectedPlayer
определяется следующим образом:
public static readonly DependencyProperty SelectedPlayerProperty =
DependencyProperty.Register("SelectedPlayer", typeof(Player), typeof(MainWindow),
new FrameworkPropertyMetadata());
public Player SelectedPlayer
{
get { return (Player)GetValue(SelectedPlayerProperty); }
set { SetValue(SelectedPlayerProperty, value); }
}
Мне не удалось найти сообщение или вопрос, которые могут мне помочь.Я играл с использованием обработчика событий Checked для CheckBox, но я не могу понять, как связать список с правильным Player
в списке, потому что ListBox не корректирует SelectedPlayer
когда флажок установлен или снят.
Большое спасибо.