Как закрыть userControl используя командную кнопку - PullRequest
0 голосов
/ 05 декабря 2011

Я использую 3 файла:

1-) Simple.xaml, он содержит

<Button x:Name="OkButton"
        Command="{Binding OkSettingsCommand}"
        IsDefault="True"
        Content="OK" />

2-) Simple.xaml.cs ... он пустой, кромеконструктор с InitializeComponent() методом

3-) SimpleViewModel ... с ICommand OkSettingsCommand;, инициализированным в конструкторе

OkSettingsCommand = new ICommand(OnOKSettings);

с использованием этой функции:

public void OnOKSettings()
{

}

Как закрыть пользовательский контроль после нажатия кнопки?

1 Ответ

0 голосов
/ 05 декабря 2011

просто попробуйте это

Создайте поведение закрытия следующим образом

public static class WindowCloseBehavior
{
    public static readonly DependencyProperty IsOpenProperty =
             DependencyProperty.RegisterAttached("IsOpen", typeof(bool), typeof(WindowCloseBehavior),
             new PropertyMetadata(IsOpenChanged));

    private static void IsOpenChanged(DependencyObject obj,
                                      DependencyPropertyChangedEventArgs args)
    {
        Window window = Window.GetWindow(obj);

        if (window != null && ((bool)args.NewValue))
            window.Close();
    }

    public static bool GetIsOpen(Window target)
    {
        return (bool)target.GetValue(IsOpenProperty);
    }

    public static void SetIsOpen(Window target, bool value)
    {
        target.SetValue(IsOpenProperty, value);
    }
}

Создайте свойство в View Model, пусть оно будет

 private bool closeMe=false ;
    public bool CloseMe
    {
        get
        {
            return closeMe;
        }
        set
        {
            closeMe = value;
            RaisePropertyChanged("CloseMe");
        }
    }

, а в представлении просто привязайтезначение CloseMe в Поведение.При нажатии на кнопку установите CloseMe = True, и это закроет текущее окно

например

<Window x:Class="WpfApplication12.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Behavior="clr-namespace:WpfApplication12"
Behavior:WindowCloseBehavior.IsOpen="{Binding CloseMe}"       
Title="Window1" Height="300" Width="300">
<Grid>
    <CheckBox IsChecked="{Binding CloseMe}" Content="Close" Margin="5"></CheckBox>
</Grid>

...