加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 获取“DialogResult只能在Window被创建之后被设置,并且

发布时间:2020-12-13 20:56:15 所属栏目:Windows 来源:网络整理
导读:我正在为WPF表单关闭实现 this MVVM模式,这也是在 blog中解释的,我收到System.InvalidOperationException,并显示错误消息“DialogResult只能在Window创建后显示为对话框”。当我尝试设置对话框结果关闭按钮命令: DialogResult = true; 这是我的ViewModel
我正在为WPF表单关闭实现 this MVVM模式,这也是在 blog中解释的,我收到System.InvalidOperationException,并显示错误消息“DialogResult只能在Window创建后显示为对话框”。当我尝试设置对话框结果关闭按钮命令:
DialogResult = true;

这是我的ViewModel:

class MainWindowViewModel:INotifyPropertyChanged
{
    private bool? dialogResult;
    public bool? DialogResult
    {
        get { return dialogResult; }
        set
        {
            if (value != this.dialogResult)
            {
                this.dialogResult = value;
                OnPropertyChanged("DialogResult");
            }
        }
    }

    public string Text
    {
        get { return "Hello!"; }
    }

    void CloseCommandExecute()
    {
        this.DialogResult = true;
    }

这是XAML视图:

<Window x:Class="WpfApplication.Mvvm.Windowclosing.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication.Mvvm.Windowclosing"
        local:DialogCloser.DialogResult="{Binding DialogResult}"
        Title="MainWindow" Height="350" Width="525">
    <Window.DataContext>
        <local:MainWindowViewModel />
    </Window.DataContext>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="100"/>
            <RowDefinition Height="40"/>
        </Grid.RowDefinitions>
        <TextBlock Text="{Binding Text}" Grid.Row="0"/>
        <Button Grid.Row="1" Command="{Binding CloseCommand}">Close Me</Button>
    </Grid>
</Window>

我在这里做错了什么?

使用ShowDialog()打开表单时,设置对话框结果才有效。当您尝试在使用Show()打开的表单上设置对话框结果时,会收到此错误。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读