基于通用Windows平台(UWP)构建的Windows 10应用程序是否可以移植回Windows 7客户?特别是,使用XAML制作的?
我刚刚开始使用Visual Studio 2015 Community Edition在Windows 10 Pro上学习UWP应用程序开发.我尝试通过在MainPage.xaml中设置Page标签的Width和Height属性来修改官方"Hello,world"示例的C#版本.有趣的是,当我启动应用程序时,它的大小会有所不同.此外,如果我调整窗口大小然后重新启动它,应用程序似乎记住它以前的窗口大小.
是否可以强制UWP应用程序具有预定义的窗口大小,至少在桌面PC上?
我找不到任何使用Acrylic Accent(CreateBackdropBrush)的详细文档.我在StackOverflow中发现了一个有用的帖子但它没有帮助入门.所以请为这篇文章创建一个详细的答案,以便每个人都可以学习.
更新:
微软发布了官方的丙烯酸材料文件
注意:
如果有人不知道丙烯酸口音.Acrylic Accent是Windows 10 Creators Update中的新功能,允许应用程序背景模糊和透明.

c# win-universal-app uwp windows-composition-api fluent-design
我有一个UWP Windows 10应用程序,并注意到任务管理器中的内存使用量随着时间的推移而增加.
我将应用程序剥离,发现导航页面时内存正在增加.所以我制作了一个只有几页的简单应用程序来测试,在这个简单的应用程序中内存仍在增加.我有一个MainPage,可以将一个帧从Page1导航到Page2,然后返回一个计时器.
public sealed partial class MainPage : Page
{
private DispatcherTimer _timer;
private bool _page1Showing;
private bool _timerRunning;
public MainPage()
{
this.InitializeComponent();
_timer = new DispatcherTimer();
_timer.Interval = new TimeSpan(0, 0, 0, 0, 200);
_timer.Tick += _timer_Tick;
}
private void _timer_Tick(object sender, object e)
{
GC.Collect();
this.rootFrame.BackStack.Clear();
this.rootFrame.ForwardStack.Clear();
if (_page1Showing)
{
this.rootFrame.Navigate(typeof(Page2));
_page1Showing = false;
}
else
{
this.rootFrame.Navigate(typeof(Page1));
_page1Showing = true;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (_timerRunning)
{
_timer.Stop();
_timerRunning = …Run Code Online (Sandbox Code Playgroud) 由于UWP App在普通桌面系统上以窗口模式运行,因此获取屏幕分辨率的"旧"方式将不再适用.
旧的分辨率与Window.Current.Bounds当时想显示英寸
是否有另一种方法来获得(主要)显示器的分辨率?
在Visual Studio 2015中测试Windows Universal类库(.NET 4.6)时,"red-> green-> refactor"循环所需的时间非常长.我的测试项目只是标准的MSTest"单元测试应用程序"项目.即使在全新解决方案,全新主题和测试项目以及基本int Add(int n1, int n2)方法的最简单场景中,它也需要大约8-15秒.这是单击"运行测试"直到显示通过/失败的时间(在进行小代码更改之后).
在我的机器上(Win 10 pro)进行相同的实验但使用基于WPF的解决方案产生大约1-2秒.
在UWP场景中,实际测试时间本身列为79 ms.其余的时间是编译和部署单元测试应用程序容器.
有没有办法用UWP显着加速TDD?
我正在努力创建自定义Cortana命令.使用通用Windows平台应用程序注册和执行命令.(GitHub的)
例如,我已经注册了以下命令
<Command Name="ShutDown">
<ListenFor>Shut down</ListenFor>
<Navigate/>
</Command>
Run Code Online (Sandbox Code Playgroud)
在UWP应用程序中运行此功能
static async void ShutDown()
{
var dialog = new MessageDialog("This is where I would shut the computer down.");
await dialog.ShowAsync();
//System.Diagnostics.Process.Start("Shutdown", "-s -t 10");
}
Run Code Online (Sandbox Code Playgroud)
但是在设置之后System.Diagnostics.Process,UWP不支持我学到的东西.
我想运行的自定义命令涉及某种执行,例如启动外部程序,运行其他脚本或打开网站.
UWP不支持它们是有意义的,因为它是通用的,XBox或手机可能无法做到这些,但我希望在Windows 10 PC上有一些替代或黑客的方法来实现这一点.
我有办法Process在UWP应用程序中执行命令或具有类似功能的其他东西吗?似乎即使我可以让Cortana执行我的C#代码,UWP也不支持在这种情况下有用的东西.
提前致谢.
我试图在Windows IOT中找到单播,Dns和网关地址.通常我可以使用NetworkInterface.GetAllNetworkInterfaces()方法访问这些值 .
但在UWP中,缺少这种方法.
有没有替代方法来获得这些价值观?
我需要它自己的退出按钮.请告诉我?我试试这个:this.Close(); //或退出不工作(
我正在从UWP应用程序(C#,使用.NET Native编译)中读取一些崩溃报告,并且我很难理解堆栈跟踪中使用的确切语法/格式.我尝试在互联网上寻找一些指南,但我没有想出任何有用的东西.
这里有一些例子:
1)
MyProject.ViewModels.SomeViewModel.<OnLogin>d__69.MoveNext()
Run Code Online (Sandbox Code Playgroud)
OnLogin是一个方法的名称SomeViewModel,为什么它在尖括号内?是"ClassName".<"MethodName>..."指示实例方法的常用方法吗?await调用之间将每个代码块转换为匿名方法,并使用continuation调度它们,所以我猜这d__69表示当前方法中的异步延续.
await调用,所以我猜这些数字不是顺序的.是否有可能从堆栈跟踪中的该数字中找出原始方法中的确切部分?MoveNext()最后那个方法是什么?它需要什么样的类型?2)
MyProject.UserControls.SomeControl.<.ctor>b__0_0
Run Code Online (Sandbox Code Playgroud)
.ctor代表对象构造函数,并查看我发现的代码,它b__0_0代表构造函数中添加的匿名事件处理程序,如下所示:SomeEvent += (s, e) => Foo();.
0_1,1_0或其他什么?3)我有这个方法:
// Returns a Task that immediately throws when awaited, as soon as the token is cancelled
public static Task<T> GetWatchedTask<T>(this Task<T> awaitableTask, CancellationToken token)
{
return awaitableTask.ContinueWith(task => task.GetAwaiter().GetResult(), token);
}
Run Code Online (Sandbox Code Playgroud)
我有这个堆栈跟踪:
MyProject.Helpers.Extensions.TasksExtensions.<>c__3$1<System.__Canon>.<GetWatchedTask>b__3_0($Task$1<__Canon> task)
Run Code Online (Sandbox Code Playgroud)
uwp ×10
c# ×8
windows-10 ×5
.net ×2
xaml ×2
.net-native ×1
cortana ×1
iot ×1
memory ×1
tdd ×1
unit-testing ×1
window ×1