dnxit
Неясно, какова ваша цель или что вы хотите сделать со списком флажков, но я приведу вам очень простой пример, как это можно сделать
Попробуйте это создать приложение wpf и заменить код MainWindow как показано ниже
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="MainWindow" Height="450" Width="800">
<Grid>
<ListBox ItemsSource="{Binding CheckList}" Grid.Column="1" Grid.Row="6" Height="200">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Name="chkitems" Content="{Binding TheText}" IsChecked="{Binding IsSelected }" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
public partial class MainWindow : Window, INotifyPropertyChanged
{
List<CheckListItem> checkList;
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChanged?.Invoke(this, e);
}
public MainWindow()
{
InitializeComponent();
CheckList = GenerateTestData();
}
public List<CheckListItem> CheckList
{
get { return checkList; }
set {
checkList = value;
OnPropertyChanged(new PropertyChangedEventArgs("CheckList"));
}
}
List<CheckListItem> GenerateTestData()
{
var checkListItems = new List<CheckListItem>() {
new CheckListItem { TheText = "Text 1", IsSelected = false },
new CheckListItem { TheText = "Text 2", IsSelected = true },
new CheckListItem { TheText = "Text 3", IsSelected = false }
};
return checkListItems;
}
}
public class CheckListItem
{
public string TheText { get; set; }
public bool IsSelected { get; set; }
}