我想允许用户更改Window ResizeMode
属性,在我的情况下默认设置为ResizeMode="CanMinimize"
。如何切换到ResizeMode="CanResize"
?
我认为可以通过使用转换器创建绑定到CheckBox.IsChecked
的布尔(或ResizeMode
属性)来完成,但我不确定这是不是这样的。即使这是正确的选择,我也不知道如何创建转换器来转换" True
"到" CanResize
"和" False
"到" CanMinimize
"。
答案 0 :(得分:3)
我更喜欢触发解决方案
<Window>
<CheckBox Name="checkbox" Content="CanResize" />
<Window.Style>
<Style TargetType="Window">
<Setter Property="ResizeMode" Value="CanMinimize" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=checkbox}" Value="True">
<Setter Property="ResizeMode" Value="CanResize" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Style>
</Window>
答案 1 :(得分:1)
创建转换器非常简单。
有类似的东西:
using System.Globalization;
using System.Windows;
using System.Windows.Data;
public class ResizeModeConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return (bool)value ? ResizeMode.CanResize : ResizeMode.CanMinimize;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}
并将此转换器添加到App.xaml资源中(转换器应位于Window
可用的范围内)
<Application.Resources>
<local:ResizeModeConverter x:Key="ResizeModeConverter" />
</Application.Resources>
现在在Window
<Window ... ResizeMode="{Binding SomeProperty, Converter={StaticResource ResizeModeConverter}}">
现在,当SomeProperty
设置为true或false时,您将获得所需的行为。您可以在读取本地设置后在启动时在VM中设置属性,或在运行时修改它,一切都应该没问题。