我可以在 Prism 中动态调整使用 IDialogService 打开的对话框的大小吗?
Can I dynamically size dialogs that are opened with IDialogService in Prism?
有没有什么方法可以使用 IDialogService
在 Prism 的代码中动态调整对话框的大小?我想根据用户的屏幕分辨率调整对话框的大小。
这是我打开对话框的方式:
public class MainViewModel
{
// Gets injected in the constructor
private IDialogService dialogService;
private void OpenDialog()
{
this.dialogService.ShowDialog(
nameof(MyDialog),
new DialogParameters(),
result => { });
}
}
这是我的对话框在 XAML
中的样子
<UserControl
x:Class="MyApplication.MyDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<!-- various controls -->
</UserControl>
最简单的方法是在视图模型中公开 Width
和 Height
属性并绑定到它们。缺点是宽度和高度纯粹与视图相关,不应在纯 MVVM 的视图模型中访问。
I would like to adjust the size of my dialog based on the user's screen resolution.
如果大小调整与用户的屏幕分辨率有关,您应该考虑为自定义对话框 window 或对话框用户控件创建附加的 behavior。通过这种方式,您可以将屏幕分辨率适配逻辑封装在 可重用 组件中,该组件位于 XAML 中并保持视图和视图模型关注点的分离。此外,您将有权访问行为中关联的 window 或用户控件,这使得在不违反 MVVM 原则的情况下更容易处理更复杂的场景。
有没有什么方法可以使用 IDialogService
在 Prism 的代码中动态调整对话框的大小?我想根据用户的屏幕分辨率调整对话框的大小。
这是我打开对话框的方式:
public class MainViewModel
{
// Gets injected in the constructor
private IDialogService dialogService;
private void OpenDialog()
{
this.dialogService.ShowDialog(
nameof(MyDialog),
new DialogParameters(),
result => { });
}
}
这是我的对话框在 XAML
中的样子<UserControl
x:Class="MyApplication.MyDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<!-- various controls -->
</UserControl>
最简单的方法是在视图模型中公开 Width
和 Height
属性并绑定到它们。缺点是宽度和高度纯粹与视图相关,不应在纯 MVVM 的视图模型中访问。
I would like to adjust the size of my dialog based on the user's screen resolution.
如果大小调整与用户的屏幕分辨率有关,您应该考虑为自定义对话框 window 或对话框用户控件创建附加的 behavior。通过这种方式,您可以将屏幕分辨率适配逻辑封装在 可重用 组件中,该组件位于 XAML 中并保持视图和视图模型关注点的分离。此外,您将有权访问行为中关联的 window 或用户控件,这使得在不违反 MVVM 原则的情况下更容易处理更复杂的场景。