C# 在复选框中存储信息的最佳方法

C# 在复选框中存储信息的最佳方法,c#,wpf,mvvm,C#,Wpf,Mvvm,我在WPF MVVM工作 我需要创建一个向用户显示的复选框数组,每个复选框都存储有关是否将文件上载到服务器的信息 例如-如果选中复选框1,则上载文件1。 如果选中checkbox2,则还将上载文件2 最好的方法是什么?我可以创建自己的属性来存储文件名吗 我想通过使用复选框上的文本并将其作为参数传递给命令来实现它,但是定义自己的属性并使用它应该更好 如果我不想向用户显示确切的文件名,该怎么办 以下是我写的: <CheckBox Name="File1" Content="File1" Com

我在WPF MVVM工作

我需要创建一个向用户显示的复选框数组,每个复选框都存储有关是否将文件上载到服务器的信息

例如-如果选中复选框1,则上载文件1。 如果选中checkbox2,则还将上载文件2

最好的方法是什么?我可以创建自己的属性来存储文件名吗

我想通过使用复选框上的文本并将其作为参数传递给命令来实现它,但是定义自己的属性并使用它应该更好

如果我不想向用户显示确切的文件名,该怎么办

以下是我写的:

<CheckBox Name="File1" Content="File1" Command="{Binding AddFileToUpload}" CommandParameter="{Binding ElementName=File1, Path=Content}"/>
<CheckBox Name="File2" Content="File1" Command="{Binding AddFileToUpload}" CommandParameter="{Binding ElementName=File2, Path=Content}"/>
致以最良好的祝愿,
Erik

我不确定您的ViewModel是如何设置的,但我会这样做:

在ViewModel中创建对象的ObservableCollection,这些对象将表示您的文件,每个文件都有自己的IsSelected属性

创建ItemsControl并将ObservableCollection绑定到ItemsControl.ItemsSource属性

将ItemsControl.ItemsPanel设置为包含StackPanel或其他可扩展容器的ItemsPanelTemplate

将ItemsSource.ItemTemplate属性设置为包含复选框的DataTemplate,然后将IsChecked属性绑定到对象的IsSelected属性

然后,创建一个按钮并使用一个命令在ObservaleCollection上迭代,收集IsSelected=true的文件,然后继续处理

这样,您就不会直接在视图中存储任何内容。复选框的生成和内部显示的数据完全依赖于存储在对象中并通过绑定提供的数据

编辑:

以下是一些详细介绍如何使用ItemsControl的链接: