c# - 我无法在 MVVM 中隐藏窗口

标签 c# wpf mvvm

我在 WPF 应用程序中有启动窗口,我的 View 中有以下代码:

     <Window x:Class="MyView"
                Name="ucPrincipal"
                Title="{Binding Titulo}"
                Visibility="{Binding EsUpdaterVisible, Mode=TwoWay}">

    <Window.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="../Recursos/Diccionarios/Converters.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Window.Resources>

<Button Content="Aceptar" HorizontalAlignment="Left" Margin="10,145,0,0" VerticalAlignment="Top" Width="75">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
                    <cmd:EventToCommand Command="{Binding AceptarCommand}" PassEventArgsToCommand="True" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>

我的 View 模型:

private RelayCommand _aceptarCommand;
        public RelayCommand AceptarCommand
        {
            get { return _aceptarCommand ?? (_aceptarCommand = new RelayCommand(aceptarCommand)); }
        }


        private void aceptarCommand()
        {
            try
            {
                EsUpdaterVisible = false;

                Titulo = "Después de aceptar.";
            }
            catch { throw; }
        }



private bool _esUpdaterVisible = true;
        public bool EsUpdaterVisible
        {
            get { return _esUpdaterVisible; }
            set
            {
                if (_esUpdaterVisible != value)
                {
                    _esUpdaterVisible = value;
                    base.RaisePropertyChangedEvent("EsUpdaterVisible");
                }
            }
        }


        private string _titulo = "Inicio";
        public string Titulo
        {
            get { return _titulo; }
            set
            {
                if (_titulo != value)
                {
                    _titulo = value;
                    base.RaisePropertyChangedEvent("Titulo");
                }
            }
        }

当我点击接受按钮时,窗口的标题改变了,但窗口仍然可见。

在某些情况下,我想从 View 模型中隐藏窗口。我该怎么做?

谢谢。

最佳答案

如果您不想使用转换器,只需使用 xaml 部分:

<Window x:Class="MyView"
            Name="ucPrincipal"
            Title="{Binding Titulo}">
    <Window.Style>
       <Style TargetType="Window">
            <Style.Triggers>
                <DataTrigger Binding="{Binding EsUpdaterVisible,UpdateSourceTrigger=PropertyChanged}" Value="True">
                     <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding EsUpdaterVisible,UpdateSourceTrigger=PropertyChanged}" Value="False">
                     <Setter Property="Visibility" Value="Collapsed"/> <!-- use hide instead of collapsed if you would like to open again this instance of window after close. -->
                </DataTrigger>
            </Style.Triggers>
       </Style>
    </Window.Style>

关于c# - 我无法在 MVVM 中隐藏窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988149/

相关文章:

c# - 当我使用快捷键时获取我的 ContextMenuStrip 的 SourceControl

c# - 使用 DoubleAnimation 设置图像不透明度

c# - WPF 工具包 DateTimePicker 使时间文本框不可编辑

带有 taglib 的 C# mp3 ID 标签 - 专辑封面

c# - 使用 protobuf-net 的 C# 项目中的 Protocol Buffer - 代码生成的最佳实践

c# - WPF 控件在窗口中的位置?

wpf - WPF Sub-MenuItem在左侧而不是右侧打开

c# - virtualizingstackpanel 如何在不实例化实际项目的情况下计算子大小?

c# - 模型在 "traditional"C#/SQLite MVVM 应用程序中的作用

c# - 在 WPF 上使用 MVVM 模式时,TextBox.LineCount 和 TextBox.GetLastVisibleLineIndex() 始终为 -1