我已经买了书#34;抬头c#"。我使用的是Windows 10和VS 2015所以只有WPF,但本书是为XAML设计的...
第11章要求这些命名空间:使用Windows.System,Windows.Storage,Windows.UI.Popups但我无法在WPF中找到它们,这些用于:MessageDialog,UIcommand,IStorageFile,FileOpenPicker,有没有办法将它们添加到WPF项目中?
//编辑 感谢您的帮助,我已经为UWP修补了VS,它确实有效。 但现在我的问题是scalling: 页面大小设置为800x600,这些是列:
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
标题在第1行,内容在第2行,按钮(保存,加载)在第3行,它看起来像网格它不会存在:
在WPF中它起作用了; /
答案 0 :(得分:0)
就我而言,这些类只适用于通用Windows平台。您可以尝试创建UWP应用程序,或者您需要的是WPF吗?
答案 1 :(得分:0)
Angelin N.是正确的,WPF中没有这些类(至少没有严重的黑客攻击)。您需要创建一个UWP项目来运行该书中的示例,听起来像。
你正在寻找的大部分内容确实存在于WPF中。在UWP中你真的很少能在WPF中做到。例如,System.Windows.MessageBox
为您提供了消息框。 System.IO.File
使您可以访问所有文件IO(相当于IStorageFile
)。文件选择器可通过Microsoft.Win32.FileDialog
获得。这两个平台之间有许多等价物。
如果您要为Windows 7制作应用程序,则需要使用WPF。但是,如果你的应用只适用于Windows 10或更高版本,那么UWP可能是最好的。
答案 2 :(得分:0)
对于异步对话框,请尝试以下操作:
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.