Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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

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
c#wpf中的MessageDialog_C#_Wpf_Xaml_Namespaces - Fatal编程技术网

c#wpf中的MessageDialog

c#wpf中的MessageDialog,c#,wpf,xaml,namespaces,C#,Wpf,Xaml,Namespaces,我买了本书《抬头看c》。我使用的是Windows10和VS2015,所以只有WPF,但这本书是为XAML设计的 第11章要求使用这些名称空间:使用Windows.System、Windows.Storage、Windows.UI.Popups,但我在WPF中找不到它们,这些名称空间用于:MessageDialog、UIcommand、IStorageFile、FileOpenPicker,有没有办法将它们添加到WPF项目 //编辑 谢谢你的帮助,我已经为UWP修补了VS,它很有效。 但现在我的问

我买了本书《抬头看c》。我使用的是Windows10和VS2015,所以只有WPF,但这本书是为XAML设计的

第11章要求使用这些名称空间:使用Windows.System、Windows.Storage、Windows.UI.Popups,但我在WPF中找不到它们,这些名称空间用于:MessageDialog、UIcommand、IStorageFile、FileOpenPicker,有没有办法将它们添加到WPF项目

//编辑 谢谢你的帮助,我已经为UWP修补了VS,它很有效。 但现在我的问题是缩放: 页面大小设置为800x600,以下是列:

 <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
            <RowDefinition Height="Auto"/>
 </Grid.RowDefinitions>

标题在第一行,内容在第二行,按钮(保存、加载)在第三行,看起来它不存在:


在WPF中,它起了作用/

就我而言,这些类只能在通用Windows平台上工作。您可以尝试创建UWP应用程序,或者您需要的是WPF?

Angelin N.是正确的,这些类在WPF中不可用(至少在没有重大黑客攻击的情况下是不可用的)。你需要创建一个UWP项目来运行书中的例子,听起来像

不过,您要查找的大部分内容确实存在于WPF中。在UWP中你能做的事情很少,而在WPF中你做不到。例如,
System.Windows.MessageBox
提供消息框
System.IO.File
允许您访问所有文件IO(相当于
IStorageFile
)。文件选择器可通过Microsoft.Win32.FileDialog获得。这两个平台之间有许多等价物


如果您希望为Windows7制作应用程序,则需要使用WPF。但是,如果您的应用程序只能在Windows 10或更高版本上运行,则UWP可能是最佳选择。

对于异步对话框,请尝试以下操作:

using System.Threading.Tasks;
using System;
using System.Windows;

// 1. call method with message window
ShowMyDialogWindow();

// 2. use async and await with Task, create your message window here.
public async void ShowMyDialogWindow()
{
    MessageBoxResult result= await Task.Run(() => MessageBox.Show("Arre you happy?", 
        "My window name", MessageBoxButton.YesNoCancel));
        switch (result)
        {
            case MessageBoxResult.None:
                break;
            case MessageBoxResult.Yes:
                // do something
                break;
            case MessageBoxResult.No:
                // do something
                break;
            default:
                break;
        }
    // This line will be executed after windows closed you can use it for 
    // something (close resource, stop timer ...)
    DoSomeThingHereToo();
}

// message window do not block your app, app will running other task.

我需要它们的原因主要是异步对话框,我曾尝试使用MessageBox.show()实现异步,但没有成功。你能更清楚地说明你要做什么吗?异步编程在WPF中绝对是可能的。通常需要使用Dispatcher对象。例如,Dispatcher.InvokeAsync将允许您以异步方式执行几乎任何类型的操作,包括ShowDialog。