为什么我不能在XAML中使用Transform定义几何?

Kia*_*ian 3 c# wpf xaml pathgeometry

我想创建一个ResourceDictionary一拉这个答案包含StreamGeometriesTransforms设置:

<ResourceDictionary>
    <StreamGeometry x:Name="Chevrons">
        <StreamGeometry.Transform>
            <TranslateTransform X="20" Y="120"/>
        </StreamGeometry.Transform>
        M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 17 [...]
    </StreamGeometry>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

1:无法向"StreamGeometry"类型的对象添加内容.

2:处理初始化字符串' {PathData} '时遇到TypeConverter语法错误.通过TypeConverter创建的对象不允许使用元素属性.

所以我试了一下PathGeometry并得到了这个错误:

无法将指定的值分配给集合.预期以下类型:"PathFigure".

有没有办法在XAML代码中将变换应用于几何?或者我只需要通过代码来完成它?

Cle*_*ens 8

你可以这样写:

<PathGeometry x:Key="Chevrons">
    <PathGeometry.Transform>
        <TranslateTransform X="20" Y="120"/>
    </PathGeometry.Transform>
    <PathGeometry.Figures>
        M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 ...
    </PathGeometry.Figures>
</PathGeometry>
Run Code Online (Sandbox Code Playgroud)

或者像这样:

<PathGeometry x:Key="Chevrons"
    Figures="M21.750001,94.749999 L34.000002,117.66218 30.625003,133.62501 ...">
    <PathGeometry.Transform>
        <TranslateTransform X="20" Y="120"/>
    </PathGeometry.Transform>
</PathGeometry>
Run Code Online (Sandbox Code Playgroud)