Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF:处理模态对话框_Wpf_Xaml_Data Binding_Dialog_Modal Dialog - Fatal编程技术网

WPF:处理模态对话框

WPF:处理模态对话框,wpf,xaml,data-binding,dialog,modal-dialog,Wpf,Xaml,Data Binding,Dialog,Modal Dialog,我在这个网站上找到了一个很好的解决方案 但我必须做一些修改,才能将其集成到我的代码中。在这个过程中,我遇到了一些小问题,主要是因为我没有完全理解代码的某些部分 我是如何将ModalDialogManager绑定到IDialogViewModel类型的MainWindow属性的。然后,我有了一个WindowsManager类,该类负责将正确的实例放入该属性中。其中一个是EditDialogViewModel,它将EditableViewModel公开给此DialogManager。我将EditDi

我在这个网站上找到了一个很好的解决方案

但我必须做一些修改,才能将其集成到我的代码中。在这个过程中,我遇到了一些小问题,主要是因为我没有完全理解代码的某些部分

我是如何将ModalDialogManager绑定到IDialogViewModel类型的MainWindow属性的。然后,我有了一个WindowsManager类,该类负责将正确的实例放入该属性中。其中一个是EditDialogViewModel,它将EditableViewModel公开给此DialogManager。我将EditDialog视图设置为此EditDialogViewModel的数据模板,但当我显示它时,新窗口仅显示其中的一部分

以下是视图:

<UserControl.Resources>

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>

            <ResourceDictionary Source="EditDataTemplates.xaml" />

        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

</UserControl.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="7*" />
            <RowDefinition Height="2*" />
            <RowDefinition Height="1*" />
        </Grid.RowDefinitions>

        <ContentControl Content="{Binding Path=ViewModel}" />

        <TextBlock Text="{Binding Path=ViewModel.Error}" />

        <UniformGrid Grid.Row="2" Columns="2">

            <Button Command="{Binding SaveCommand}" />

            <Button Command="{Binding CancelCommand}" />

        </UniformGrid>

    </Grid>
</UserControl>
他正在那里应用绑定,但我想这只是第一个被绑定的ContentControl之类的东西。这很棘手

另一个问题是鼠标在模式对话框中不起作用。我可以用tab键进入文本框,但不能点击

有没有办法解决这个问题,或者有更好的方法来处理WPF中的模态对话框

编辑

好吧,我承认。我是个大白痴。这太简单了,我就是看不见。我已经将UserControl上的高度和宽度设置为一个固定的值,而我仍然把它当作一个窗口来摆弄。所以事实上,它展示了整个事情,只是没有空间。我不知道为什么鼠标在那一点上不工作,但现在它工作得很好。

回答“在WPF中处理模式对话框的更好方法?”WPF扩展工具包中有一个解决模式对话框问题的方法


事实上,我认为我只是做错了一些简单的事情。但这是一个很好的信息。
 void Show()
    {
        if (_window != null) Close();

        Window w = new Window();
        _window = w;
        w.Closing += w_Closing;
        w.Owner = GetParentWindow(this);

        w.DataContext = this.DataContext;
        w.SetBinding(Window.ContentProperty, ""); //This code here does something I don't fully understand

        w.Title = Title;
        w.Icon = Icon;
        w.Height = DialogHeight;
        w.Width = DialogWidth;
        w.ResizeMode = DialogResizeMode;
        w.ShowDialog();
    }