1

我目前正在为我的一个项目设计一种仪表控制。到目前为止一切正常,控制显示也很好。目前我如何手动放置控件的所有刻度。它有效,但不是很好。

我想知道它是否可能很容易,最好在纯 XAML 中执行某种重复。这意味着我布局了一条线并让 WPF 以不同的角度将其绘制 X 次。

目前渲染我的刻度看起来像这样:

<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="0" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="18" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="36" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="54" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="72" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="90" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="108" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="126" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="144" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="162" />
    </Line.RenderTransform>
</Line>
<Line>
    <Line.RenderTransform>
        <RotateTransform Angle="180" />
    </Line.RenderTransform>
</Line>

虽然它有效,但我并不喜欢它。

任何想法如何更好地做到这一点?

顺便说一句,线条的其余属性放在样式定义中:

<Style TargetType="Line">
    <Setter Property="Stroke" Value="{Binding Source={StaticResource displayForeground}}" />
    <Setter Property="StrokeThickness" Value="1" />
    <Setter Property="X1" Value="-85" />
    <Setter Property="X2" Value="-95" />
    <Setter Property="LayoutTransform" Value="1.00 0.00 -0.00 1.00 0 0" />
</Style>
4

1 回答 1

0

为什么不从您的控件中公开一组刻度,然后绑定ItemsControl到它们。您勾选对象可能有一个Angle属性,您可以RotateTransform在 ItemTemplate 中将其绑定到该属性。

于 2012-06-11T09:23:26.250 回答