更改列表视图 (MVVM)
本文关键字:MVVM 视图 列表 | 更新日期: 2023-09-27 18:34:24
我想知道在列表视图中动态显示不同内容的最佳设计是什么。
我想要的是(例如)根据单选按钮,列表视图填充项目(设置 ItemsSource、更改列宽、名称和行信息本身)。
我目前正在做的是动态更改所有列表视图属性。
我想知道是否最好使用多个列表视图(甚至可能作为用户控件),所有这些都位于同一窗口位置并隐藏所有未使用的列表视图。
此外,由于我使用的是 MVVM Light/WPF,因此我希望尽可能轻松地将其连接到 XAML 代码。
如果 ItemsSource 中的更改及时发生(或者您希望根据某些条件(如 RadioButton 的 IsChecked 属性)进行更改),则需要反思更改数据模板。 出路是创建数据触发器,它将根据某些条件交换您的数据模板。
<ListView>
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="ItemsSource" Value="{Binding InitalSource}"/>
<Setter Property="ItemTemplate" Value="{StaticResource InitialDataTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=RadioButton, Path=IsChecked}" Value="True">
<Setter Property="ItemsSource" Value="{Binding AnotherSource}"/>
<Setter Property="ItemTemplate" Value="{StaticResource AnotherDataTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Style>
</ListView>
默认情况下,每当 DataTrigger 的条件不再为 true 时,设置器所做的所有更改都将消失,因此,如果单选按钮的 IsCheck 值为 False,则无需添加另一个 DataTrigger。