Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改列表视图(MVVM)_C#_Wpf_Listview_Mvvm Light - Fatal编程技术网

C# 更改列表视图(MVVM)

C# 更改列表视图(MVVM),c#,wpf,listview,mvvm-light,C#,Wpf,Listview,Mvvm Light,我想知道在列表视图中动态显示不同内容的最佳设计是什么 我想要的是(例如)根据单选按钮,列表视图中可以填充项目(设置ItemsSource、更改列宽、名称和行信息本身) 我目前正在做的是动态更改所有列表视图属性 我想知道是否最好使用多个列表视图(甚至可能作为用户控件),所有视图都位于同一窗口位置,并隐藏所有未使用的视图 另外,由于我使用的是MVVM Light/WPF,所以如果可能的话,我希望能够轻松地将其连接到XAML代码。如果ItemsSource中的更改及时发生(或者您希望根据某些条件(如R

我想知道在列表视图中动态显示不同内容的最佳设计是什么

我想要的是(例如)根据单选按钮,列表视图中可以填充项目(设置ItemsSource、更改列宽、名称和行信息本身)

我目前正在做的是动态更改所有列表视图属性

我想知道是否最好使用多个列表视图(甚至可能作为用户控件),所有视图都位于同一窗口位置,并隐藏所有未使用的视图

另外,由于我使用的是MVVM Light/WPF,所以如果可能的话,我希望能够轻松地将其连接到XAML代码。

如果ItemsSource中的更改及时发生(或者您希望根据某些条件(如RadioButton的IsChecked属性)进行更改,您需要考虑更改DataTemplate。解决方法是创建DataTrigger,它将根据某些条件交换数据模板

   <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时,默认情况下,setter所做的所有更改都将消失,因此,如果已检查RadioButton的值为False,则无需添加另一个DataTrigger。

如果您更改内容并希望ListView在显示数据时跟随该更改,为什么不在更改数据时更改DataTemplate?将ObservableCollection绑定到单选按钮,并根据需要更改此集合行动。查看此组件。按钮的数据会动态地改变你的答案。我认为两者可能使用相同的解决方案。(为什么不回答,这样我就可以“奖励”你分数)。它看起来比隐藏小部件要好。这个例子看起来很好(我现在有了丑陋的代码)。