1

ユーザーが Window プロパティを変更できるようにしたいと思います。ResizeMode私の場合はデフォルトで に設定されています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

Creating a converter is pretty simple right.

Have something like:

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();
  }
}

and add this converter to your App.xaml Resources(Converter should be in a scope available to your Window)

<Application.Resources>
  <local:ResizeModeConverter x:Key="ResizeModeConverter" />
</Application.Resources>

Now in your Window

<Window ... ResizeMode="{Binding SomeProperty, Converter={StaticResource ResizeModeConverter}}">

Now when SomeProperty is set to true or false you get your required behavior. You can set the property in your VM at startup after reading your local setting's or modify it at runtime and everything should be fine.

于 2013-07-30T13:14:07.303 に答える