Is there any way to bind the view model to a different view depending the resolution? Not using a single view model type and a corresponding DataTemplate alone. You could either
Use two different view model types and views
Implement the view to adopt itself according to the view model (which should then know about the current screen resolution)
Use a DataTemplateSelector to select the appropriate view based on some logic other than just the type of the view model
2条答案
按热度按时间vlurs2pr1#
根据您的要求,有多种方法可以实现这一点。让我重点介绍两种可能适合您的不同方法。如何确定屏幕分辨率是另一个主题,请参阅:
数据模板选择器
您可以创建一个数据模板选择器,它根据屏幕分辨率返回
DataTemplate
。确定屏幕分辨率的机制来自上面的问题。您可以在XAML中指定此选择器。由于我不知道您使用的是哪个控件,因此本示例使用一个简单的
ContentControl
。要指定给它的属性可能会有所不同。资源字典
您可以建立个别的资源字典,其中包含每个不同屏幕的数据模板,沿着其他只适用于特定屏幕大小的特定资源。然后在启动时(例如,在
App
的OnStartup
方法中),将符合屏幕分辨率的资源字典合并到应用程序资源(App.Resources
)中。根据应用程序的大小和复杂性,您可以将每个不同屏幕分辨率的控件分离到自己的项目中,类似于资源字典方法。如果应用程序总是在特定的LCD类型上运行,而从不在其他类型上运行,也可以为每个类型创建目标,这样每个 “平台” 就只包含它所需要的资源。
sgtfey8w2#
Is there any way to bind the view model to a different view depending the resolution?
Not using a single view model type and a corresponding
DataTemplate
alone.You could either