当我用我当前的应用程序解决越来越多的与 MVVM 相关的问题时,更多的问题不断涌现。:)
我试图替换的当前实现涉及一个 StackPanel,其子代或多或少是动态生成的(通过查看配置文件)。每个孩子都是 UserControl 的一个实例。之前,我所做的是为 StackPanel 分配一个名称,然后在 Window_Loaded 事件处理程序中,我只需确定必要的子级数量,为每个子级实例化一个 UserControl,并为 UserControl 分配一个 ID,这样我就知道了单击特定 UserControl 实例的按钮的正确来源;每个 UserControl 上有 3 个按钮。
所以我知道我想将 StackPanel 绑定到一个集合。这当然是不可能的,因为我需要使用从 ItemsControl 派生的东西,例如 ListBox 或 ListView(甚至是 ItemsControl 本身)。为了在 MVVM-ifying 的第一次迭代中保持简单,我将只使用一个 ListBox。
现在的问题是,我在代码隐藏中的 ObservableCollection 是否应该是 ObservableCollection?我相信这意味着无论我如何对我的 GUI 进行皮肤处理,这个 ListBox 将始终具有子项,无论它们在 MyUserControl 的 XAML 文件中的外观如何。我也希望它是可定制的,但我认为这意味着我也必须将 MVVM 模式应用于 UserControl。