某些标记扩展会引发编译错误.例如,如果找不到引用的类,则StaticExtension(x:Static)会引发编译错误.有谁知道这个的机制?是否已融入XAML编译器或自定义标记扩展可用的功能?
编辑:mfeingold下面建议我需要查看IVsErrorList接口,但我不能立即看到这将如何帮助某人白色标记扩展生成编译时错误.任何例子?
假设我有一个简单的WPF 3D场景设置,其中一个矩形围绕X轴旋转-45度,如下所示:
<Viewport3D>
<Viewport3D.Camera>
<PerspectiveCamera Position="0,0,4"/>
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="White" Direction="-1,-1,-3" />
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D Positions="-1,-1,0 1,-1,0 -1,1,0 1,1,0"
TriangleIndices="0,1,2 1,3,2"/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Red"/>
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
<Transform3DGroup>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1,0,0" Angle="-45"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</ModelVisual3D.Transform>
</ModelVisual3D>
</Viewport3D>
Run Code Online (Sandbox Code Playgroud)
这给了我以下内容:
alt text http://www.freeimagehosting.net/uploads/4aa48434a9.png
现在我想围绕模型的Z轴旋转图像45度.如果我像这样放入第二个RotateTransform3D:
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0,0,1" Angle="45"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
Run Code Online (Sandbox Code Playgroud)
它围绕场景的 Z轴旋转.对于这个特定的X旋转我已经找到了我需要的是:
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0,1,1" Angle="45"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
Run Code Online (Sandbox Code Playgroud)
但在这里我的数学失败了.任何人都可以告诉我如何使用任意X(和Y,如果你想)轮换?
我公司拥有一批在举行核对清单的ReactiveLists有ChangeTrackingEnabled = true.我想只在每个列表中至少检查一个项目时启用我的OkCommand.
此外,还有各种其他属性需要确保使用有效的字节值填充.
我尝试过以下操作,但它不起作用:
this.OkCommand = new ReactiveCommand(this.WhenAny(
x => x.Property1,
x => x.Property1,
x => x.Property1,
x => x.List1,
x => x.List2,
x => x.List3,
(p1, p2, p3, l1, l2, l3) =>
{
byte tmp;
return byte.TryParse(p1.Value, out tmp) &&
byte.TryParse(p2.Value, out tmp) &&
byte.TryParse(p3.Value, out tmp) &&
l1.Value.Any(x => x.IsChecked) &&
l2.Value.Any(x => x.IsChecked) &&
l3.Value.Any(x => x.IsChecked);
}));
Run Code Online (Sandbox Code Playgroud)
似乎属性更改通知未传播到WhenAny.知道我应该做什么吗?
我意识到这里有很多问题要求在XNA和SlimDX之间进行选择,但这些都与游戏编程有关.
一点背景:我有一个应用程序,可以从XML描述中呈现场景.目前我正在使用WPF 3D,除了WPF无法在屏幕外渲染场景(即在服务器上,而不在窗口中显示它们),并且渲染到位图导致WPF回退到软件渲染之外,这主要起作用.
所以我面临着必须编写自己的渲染器.以下是要求:
正如你所看到的那样,它非常简单,WPF可以很好地管理它,除了那些无法导出的场景问题.
特别是我不需要游戏开发中通常需要的许多东西.因此,请记住,您会选择XNA还是SlimDX?代码的非呈现部分已经用C#编写,所以想坚持下去.
我正在尝试为类似QML的标记语言编写解析器,我想在标记中允许C#表达式.所以一个例子可能如下所示:
ClassName {
Property1: 10
Property2: Math.Sqrt(123)
Property3: string.Format("{0} {1}", "Hello", "World")
}
Run Code Online (Sandbox Code Playgroud)
(这也有点像ASP.NET的Razor引擎,但是afaics Razor不使用Roslyn?)
我该怎么做?我只想解析一个表达式,无论是文字,方法调用,lambda等.我试过使用CSharpSyntaxTree.ParseText但是需要一个完整的文件而我找不到任何与此用法相关的文档 -案件.
我在这里使用Adobe Flex/Air,但据我所知,这适用于所有JavaScript.我曾经遇到过这个问题几次,那里必须有一个简单的解决方案!
假设我有以下XML(使用e4x):
var xml:XML = <root><example>foo</example></root>
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码更改示例节点的内容:
xml.example = "bar";
Run Code Online (Sandbox Code Playgroud)
但是,如果我有这个:
var xml:XML = <root>foo</root>
Run Code Online (Sandbox Code Playgroud)
如何更改根节点的内容?
xml = "bar";
Run Code Online (Sandbox Code Playgroud)
显然不起作用,因为我试图将字符串分配给XML对象.
c# ×4
3d ×2
wpf ×2
.net ×1
air ×1
apache-flex ×1
e4x ×1
geometry ×1
javascript ×1
math ×1
razor ×1
reactiveui ×1
roslyn ×1
slimdx ×1
xna ×1