在复选框中存储信息的最佳方式

时间:2018-01-18 16:20:11

标签: c# wpf mvvm

我在WPF MVVM中工作。

我需要创建一个复选框数组(显示给用户) - 每个复选框都存储有关是否将文件上传到服务器的信息。

例如 - 如果选中复选框1,则上传file1。 如果选中checkbox2,则还会上传file2。

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

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

(如果我不想向用户显示确切的文件名怎么办?)

这是我写的:

<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}"/>

最诚挚的问候, 埃里克

1 个答案:

答案 0 :(得分:1)

我不确定您的ViewModel是如何设置的,但这就是我接近它的方式:

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

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

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

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

    < / LI>
  5. 然后,创建一个Button并使用一个迭代ObservableCollection的命令,收集包含IsSelected = true的文件,然后继续您的流程。

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

    修改

    以下是一些详细说明如何使用ItemsControl的链接:Boop Beep