1

我想允许用户更改 WindowResizeMode属性,在我的情况下默认设置为ResizeMode="CanMinimize". 怎么可能切换到ResizeMode="CanResize"

我认为这可以通过创建一个CheckBox.IsChecked绑定到ResizeMode转换器的布尔(或属性)来完成,但我不确定这是否是这样。即使这是正确的选择,我也不知道如何创建一个将“ True”转换为“ CanResize”和“ False”转换为“”的转换器CanMinimize

4

2 回答 2

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>
于 2013-07-30T13:22:39.173 回答
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 中设置该属性,或者在运行时对其进行修改,一切都应该没问题。

于 2013-07-30T13:14:07.303 回答