我在.Net Native和中发现了(可能是)过度优化的问题structs.我不确定编译器是否过于激进,或者我太盲目无法看到我做错了什么.
要重现此,请按照下列步骤操作:
步骤1:在Visual Studio 2015 Update 2中创建一个新的Blank Universal(win10)应用程序,目标是构建10586,最小版本为10240.调用项目NativeBug,以便我们拥有相同的命名空间.
第2步:打开MainPage.xaml并插入此标签
<Page x:Class="NativeBug.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<!-- INSERT THIS LABEL -->
<TextBlock x:Name="_Label" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
第3步:将以下内容复制/粘贴到MainPage.xaml.cs
using System;
using System.Collections.Generic;
namespace NativeBug
{
public sealed partial class MainPage
{
public MainPage()
{
InitializeComponent();
var startPoint = new Point2D(50, 50);
var points = new[]
{
new Point2D(100, 100),
new Point2D(100, …Run Code Online (Sandbox Code Playgroud) 由于UWP需要.Net Native(非常受欢迎),我现在正在获得神秘的堆栈跟踪.这是使用我的应用的人报告的异常:
System.InvalidCastException: InvalidCast_Com
at SharedLibrary!<BaseAddress>+0x429e9d
at SharedLibrary!<BaseAddress>+0x47d878
at SharedLibrary!<BaseAddress>+0x48455a
at SharedLibrary!<BaseAddress>+0x499043
at SharedLibrary!<BaseAddress>+0x498fb7
at SharedLibrary!<BaseAddress>+0x5ea468
at SharedLibrary!<BaseAddress>+0x5ea418
// this goes on...
Run Code Online (Sandbox Code Playgroud)
我知道在某处有一个无效的演员...但我需要知道SharedLibrary!<BaseAddress>+0x429e9d指向的是什么.
有没有办法找到这些链接指向的位置?
有人能够在WinRT中的XAML中添加原语吗?我正在尝试运行以下内容,这是除WinRT之外的所有基于XAML的技术的标准:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="using:System">
<System:Double x:Key="MyWidth">550</System:Double>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
这不会在Visual Studio中显示错误,但会抛出一个XamlParseException,并显示消息"未找到类型'Double'..."
谢谢!
我有一个模板,它接收一个stringas作为其数据类型:
<DataTemplate x:DataType="System:String">
<TextBlock Text="{x:Bind}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
但是这种绑定技术给了我一个构建错误.如何在{x:Bind}没有路径值的情况下使用?我想绑定字符串,而不是字符串中的属性.
鉴于此DataTemplate:
<DataTemplate x:DataType="Color">
...
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
as运算符必须与引用类型或可空类型一起使用('Color'是不可为空的值类型)
当您按照错误操作时,它会自动生成使用该as运算符的视图的代码.
public void DataContextChangedHandler(global::Windows.UI.Xaml.FrameworkElement sender, global::Windows.UI.Xaml.DataContextChangedEventArgs args)
{
global::Windows.UI.Color data = args.NewValue as global::Windows.UI.Color;
if (args.NewValue != null && data == null)
{
throw new global::System.ArgumentException("Incorrect type passed into template. Based on the x:DataType global::Windows.UI.Color was expected.");
}
this.SetDataRoot(data);
this.Update();
}
Run Code Online (Sandbox Code Playgroud)
我知道这{x:Bind}是新的,但为了以防万一,是否有人知道如何配置它以允许值类型,或至少使用直接投射?
<TextBox Text="{Binding MyTitle, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Run Code Online (Sandbox Code Playgroud)
使用时是否有相同的效果x:Bind?
如果我像这样使用它,它只会在焦点改变时更新.
<TextBox Text="{x:Bind ViewModel.MyTitle, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud) 我注意到几个PDF Annotation应用程序(Adobe Acrobat,Bluebeam等)都有一个算法,用于围绕多边形创建云模式:
拖动此多边形的顶点时,将重新计算云模式:
注意如何重新计算弧以包围多边形.它们不会被拉伸或扭曲.无论用什么算法来定义它似乎都是行业标准.有几个PDF编辑器允许您创建它,并且在每个编辑器中,拖动顶点时云弧看起来都相同.
我正在尝试创建一个复制它的WPF示例应用程序,但我似乎无法在任何地方找到生成云模式的文档.
我对图形设计和2D编程非常流利,而且我能够创建拖动顶点的工具,但是我需要帮助来弄清楚如何绘制这些弧.它看起来像一个系列ArcSegments的PathGeometry.
所以我的问题是,在多边形周围创建这些弧的算法是什么?
要么
在哪里可以找到这些行业标准PDF模式,图纸和/或注释的文档?(云,箭头,边界等)
成功创建FileTable后,我尝试查看文件共享但我的权限被拒绝.在Management Studio中,右键单击FileTable,然后"Explore FilteTable Directory"给出以下错误消息:
无法打开文件位置.未启用访问权限或您没有权限.
如果我尝试使用\ mycomputer\sqlexpress手动到达共享...,我仍然被拒绝访问.
这是在我的本地计算机上运行的SQL Express.我正在从同一台机器上访问此共享.我错过了什么?
在你回答之前,请看这篇文章.
首先得到答案可能会解决以下问题.
这是一个刚刚开始使用Windows 10(Universal Apps)的问题.在Windows 8.1和其他所有XAML技术中,这种技术完美无瑕.这是空白通用应用程序项目中的设置:
1.具有附加属性的静态类
创建一个包含附加属性的类Brush.把它放在项目的任何地方.
public static class MySettings
{
public static Brush GetAccentBrush(DependencyObject d)
{
return (Brush)d.GetValue(AccentBrushProperty);
}
public static void SetAccentBrush(DependencyObject d, Brush value)
{
d.SetValue(AccentBrushProperty, value);
}
public static readonly DependencyProperty AccentBrushProperty = DependencyProperty.RegisterAttached(
"AccentBrush",
typeof(Brush),
typeof(MySettings),
null
);
}
Run Code Online (Sandbox Code Playgroud)
2.使用附加属性将控件添加到MainPage.xaml
在主页面中,添加一个ContentControl自定义模板,Grid其背景颜色设置为重点画笔.重点画笔以风格设置.
<Page x:Class="UniversalTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="using:UniversalTest"
mc:Ignorable="d">
<Page.Resources>
<Style x:Key="MyControl"
TargetType="ContentControl">
<Setter Property="local:MySettings.AccentBrush"
Value="Green" /> <!-- Setting value here -->
</Style>
</Page.Resources>
<Grid …Run Code Online (Sandbox Code Playgroud) 这个问题主要针对Windows Phone开发人员,但我想任何XAML技术都适用.
我的VirtualizingStackPanel作品很棒,我可以看到内存使用的改进.但是,我在其中的项目的ListBox高度可变,并且实例化/绑定可能非常复杂.
当滚动速度非常快时,您会在面板赶上时开始看到死空间.在我看来,如果面板能够提前渲染更多项目,则可以解决此问题.
在这一点上,我感觉它只会在最后一个可见项目之后再渲染1或2个项目.有没有办法增加这个数字?可以提前5件物品吗?
如果答案是"否",有没有办法欺骗/破解它?
xaml virtualizingstackpanel windows-phone-7 windows-phone windows-phone-8
c# ×7
xaml ×5
uwp ×4
.net-native ×2
2d ×1
algorithm ×1
data-binding ×1
exception ×1
filetable ×1
graphics ×1
pdf ×1
stack-trace ×1
struct ×1
windows-8 ×1
winrt-xaml ×1