我在wpf应用程序中有一个用复选框填充的列表视图。
的数据
我将“选中”的值存储在配置文件中,每次打开程序时,我都想读取这些值并在列表视图中预先选择它们。我该怎么做?
XML格式
<ListView ItemsSource="{Binding ClassificationTypes}" SelectionMode="Multiple" ItemContainerStyle="{StaticResource CheckListView}" SelectionChanged="OnClassification_SelectionChanged" />
字符串
静态资源XML
<Style x:Key="CheckListView" TargetType="ListViewItem">
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<CheckBox Margin="5,2" IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem}, Path=IsSelected, Mode=TwoWay}">
<ContentPresenter />
</CheckBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
型
代码隐藏
我正在用枚举值填充列表。
public ObservableCollection<string> ClassificationTypes { get; set; }
ClassificationTypes = new ObservableCollection<string>();
IEnumerable<ClassTypes> types = Enum.GetValues(typeof(ClassTypes)).Cast<ClassTypes>();
foreach (ClassTypes type in types)
{
string description = EnumExtensions.GetDescription(type);
ClassificationTypes.Add(description);
}
型
当我启动程序时,它读入配置文件,但此时,ListView.Items.Count
为0,所以我不能循环通过它们。只有在初始化完成后,它才开始提取所有绑定的数据以显示。如何在显示前预先选择某些值?
1条答案
按热度按时间bvuwiixz1#
您可以有一个视图模型,其中的数据项类具有字符串和bool属性。根据您的具体要求,您可能必须添加通常的INotifyPropertyChanged实现。
字符串
将其与列表框一起使用,如下所示。如果未设置更复杂的ListView控件的
View
属性,请不要使用该控件。型
一些测试数据:
型