0

我有一个组合框,其中的项目列表永远不会改变。我很好奇所说的组合框的人口应该发生在哪里:xaml 或代码隐藏。是否有任何实质性的理由选择其中之一?

4

2 回答 2

2

我会定义一个枚举,然后使用 ViewModel 从中填充它。但是,我非常偏爱 MVVM,您可能更喜欢直接在 XAML 中进行。

于 2013-08-08T19:30:06.900 回答
1

我认为它是否进入 XAML 或代码隐藏并不重要,只要它驻留在其中任何一个中即可。我建议先尝试将它放入 XAML,因为它通常更干净。有时这是不可能的,例如从数据库中提取静态列表。

否则会被视为违反 MVVM。考虑一个案例,我们有一个车辆组合框

<ComboBox>
    <ComboBoxItem>Car</ComboBoxItem>
    <ComboBoxItem>Truck</ComboBoxItem>
    <ComboBoxItem>Bike</ComboItem>
</ComboBox>

但这可以很容易地用其他控件来表示

<RadioButton GroupName="vehicle" Content="Car" />
<RadioButton GroupName="vehicle" Content="Truck" />
<RadioButton GroupName="vehicle" Content="Bike" />

现在,如果我们在 ViewModel 中定义了一个包含“Vehicles”的集合并将我们的 ComboBox 绑定到它,那么 ViewModel 现在就有效地了解了有关车辆的 View 实现的一些信息。这就是违规发生的地方。ViewModel 应该只知道视图的状态,在这种情况下是选择什么车辆。如何选择车辆的方法取决于 View 本身。

于 2013-08-08T20:13:52.617 回答