wpf - XAML 中各个 Point 资源的 PointCollection 资源?
问题描述
如果我必须创建一个点集合作为 XAML 资源,我会这样做:
<Window.Resources>
<PointCollection x:Key="points">
<Point>0,30</Point>
<Point>20,50</Point>
<Point>40,10</Point>
</PointCollection>
</Window.Resources>
就我而言,这些点已经是资源:
<Window.Resources>
<Point x:Key="a" X="100" Y="100"/>
<Point x:Key="b" X="200" Y="100"/>
<Point x:Key="b1a" X="100" Y="0"/>
<Point x:Key="b1b" X="200" Y="0"/>
</Window.Resources>
并且这种方式(可能已经过度杀戮)不起作用,因为 X/Y 不是依赖属性:
<Window.Resources>
<PointCollection x:Key="b1points">
<Point X="{Binding Source={StaticResource b1a}, Path=X}"
Y="{Binding Source={StaticResource b1a}, Path=Y}"/>
<Point X="{Binding Source={StaticResource b1b}, Path=X}"
Y="{Binding Source={StaticResource b1b}, Path=Y}"/>
<Point X="{Binding Source={StaticResource b}, Path=X}"
Y="{Binding Source={StaticResource b}, Path=Y}"/>
</Window.Resources>
该集合稍后用于 Bezier 段:
<PolyBezierSegment Points="{StaticResource b1points}"/>
但是这些点必须单独声明,以便它们可以像这样使用:
<Ellipse Canvas.Left="{Binding Source={StaticResource a}, Path=X}"
Canvas.Top="{Binding Source={StaticResource a}, Path=Y}"
Width="3" Height="3" Fill="Red"/>
有人能够在 XAML 中提出一个平均值吗?甚至更难,没有转换器?
解决方案
这应该有效:
<Window.Resources>
<Point x:Key="a" X="100" Y="100"/>
<Point x:Key="b" X="200" Y="100"/>
<Point x:Key="b1a" X="100" Y="0"/>
<Point x:Key="b1b" X="200" Y="0"/>
<PointCollection x:Key="b1points">
<StaticResource ResourceKey="b1a"/>
<StaticResource ResourceKey="b1b"/>
<StaticResource ResourceKey="a"/>
<StaticResource ResourceKey="b"/>
</PointCollection>
</Window.Resources>
...
<PolyBezierSegment Points="{StaticResource b1points}"/>
...
<Path Fill="Red">
<Path.Data>
<EllipseGeometry Center="{StaticResource a}" RadiusX="1.5" RadiusY="1.5"/>
</Path.Data>
</Path>
推荐阅读
- json - 使用 arm 模板部署存储帐户时遇到问题
- php - 将值传递到 ACF 前端表单字段
- clickhouse - 如何获得低于所选日期的最大值?
- python - 如何在 Django 中只显示表单中的一个字段
- flutter - 显示错误:内部错误:(java.lang.ClassNotFoundException) com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index
- php - 使用 PHP 从 Google 表格中获取单元格格式信息
- nginx - 内容安全策略中的空 http 和 https 声明
- winapi - 如何设置初始桌带宽度?
- android - 如何为 Google Play 审阅者指定登录凭据
- javascript - 我怎样才能开玩笑地测试这个 redux 操作?