与Windows资源管理器类似,我有一个文件夹列表作为数据,但我希望有多个视图,例如:图标视图,列表视图等。
这是我的方法:
<Page.Resources>
<DataTemplate x:Name="iconViewDataTemplate"> ... </DataTemplate>
<DataTemplate x:Name="listViewDataTemplate> ... </DataTemplate>
</Page.Resources>
<Grid>
<StackPanel>
<Grid>
<Button x:Name="toggleViewButton" Content="Toggle View" Click="toggleViewButton_Click" />
</Grid>
<Grid>
<GridView x:Name="folderView"
ItemsSource="{Binding Path=folders}"
ItemTemplate="{StaticResource iconViewDataTemplate}"/>
<ListView x:Name="listView"
ItemsSource="{Binding Path=folders}"
ItemTemplate="{StaticResource listViewDataTemplate}"
IsEnabled="False"
Opacity="0"/>
</Grid>
</StackPanel>
</Grid>
中的代码
private void toggleViewButton_Click(object sender, RoutedEventArgs e)
{
folderView.IsEnabled = folderView.IsEnabled ^ true;
folderView.Opacity = folderView.Opacity ^ 1;
listView.IsEnabled = listView.IsEnabled ^ true;
listView.Opacity = listView.Opacity ^ 1;
}
这是正确的做法吗?我担心如果我有很多观点,那么切换并不容易,因为我必须跟踪每个观点的状态。
实现此多个视图的最佳做法是什么?
我可以为视图提供类似界面的内容,然后我可以更改样式:
代表:
<IView x:Name="mainView"
Style="{Binding istyle}"
ItemsSource="{Binding Path=folders}"
ItemTemplate="{Binding istyle.Template}" />
然后只需更改istyle中的样式即可完成切换。
答案 0 :(得分:0)
我选择的解决方案是使用<Frame>
,我可以使用正确的视图更改框架。
<Grid>
<StackPanel>
<Grid>
<Button x:Name="toggleViewButton" Content="Toggle View" Command="{Binding ToggleCommand}" />
</Grid>
<Grid>
<Frame x:Name="viewFrame"/>
</Grid>
</StackPanel>
</Grid>
然后在ViewModel&#39; ToggleCommand,我会让Frame导航到新的View。