小编Gro*_*kys的帖子

WPF标记扩展如何引发编译错误?

某些标记扩展会引发编译错误.例如,如果找不到引用的类,则StaticExtension(x:Static)会引发编译错误.有谁知道这个的机制?是否已融入XAML编译器或自定义标记扩展可用的功能?

编辑:mfeingold下面建议我需要查看IVsErrorList接口,但我不能立即看到这将如何帮助某人白色标记扩展生成编译时错误.任何例子?

c# wpf

4
推荐指数
1
解决办法
864
查看次数

WPF 3D - 围绕它自己的轴旋转模型

假设我有一个简单的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,如果你想)轮换?

math 3d wpf geometry

4
推荐指数
1
解决办法
2万
查看次数

ReactiveList和WhenAny

我公司拥有一批在举行核对清单的ReactiveListsChangeTrackingEnabled = 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.知道我应该做什么吗?

c# reactiveui

4
推荐指数
1
解决办法
2176
查看次数

XNA vs SlimDX用于屏幕外渲染器

我意识到这里有很多问题要求在XNA和SlimDX之间进行选择,但这些都与游戏编程有关.

一点背景:我有一个应用程序,可以从XML描述中呈现场景.目前我正在使用WPF 3D,除了WPF无法在屏幕外渲染场景(即在服务器上,而不在窗口中显示它们),并且渲染到位图导致WPF回退到软件渲染之外,这主要起作用.

所以我面临着必须编写自己的渲染器.以下是要求:

  • 混合3D和2D元素.
  • 每个场景相对较少的元素(数十个网格,数十个2D元素).
  • 大型场景(打印时最大可达3000px).
  • 只渲染一个帧(即FPS不是问题).
  • 不透明面具.
  • 像素着色器.
  • 软件回退(服务器可能有也可能没有合适的gfx卡).
  • 可以在屏幕外渲染.

正如你所看到的那样,它非常简单,WPF可以很好地管理它,除了那些无法导出的场景问题.

特别是我不需要游戏开发中通常需要的许多东西.因此,请记住,您会选择XNA还是SlimDX?代码的非呈现部分已经用C#编写,所以想坚持下去.

.net c# 3d xna slimdx

3
推荐指数
1
解决办法
1960
查看次数

在Roslyn中解析嵌入式表达式

我正在尝试为类似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但是需要一个完整的文件而我找不到任何与此用法相关的文档 -案件.

c# razor roslyn

3
推荐指数
1
解决办法
1299
查看次数

E4X:分配给根节点

我在这里使用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对象.

javascript apache-flex air e4x

1
推荐指数
1
解决办法
2259
查看次数

标签 统计

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