需要在引用样式时绑定 属性

Need to bind a property in a style at the point that I reference it

我使用的样式包含多个元素,但我将在此处的示例代码中仅显示水平线。 Line 的 StrokeDashArray 尚未定义。

    <Style x:Key="YAxisTitleStyle" TargetType="s:AxisTitle">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid>
                        <Line X2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"
                              Stroke="{Binding Path=BorderBrush, RelativeSource={RelativeSource AncestorType={x:Type s:YAxis}}}"
                              StrokeThickness="2"
                              StrokeDashArray=""/>
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我想在使用样式时定义 StrokeDashArray。

                <YAxis TitleStyle="{StaticResource YAxisTitleStyle}"
                      BorderBrush="{Binding ElementName=HResitivitySeries, Path=SeriesColor, Converter={StaticResource ColorToBrushConverter}}"/>

我需要以某种方式将样式中线条的 StrokeDashArray 绑定到 HResistvitySeries 的 StrokeDashArray 属性。我不知道如何进行这种绑定,甚至不知道是否可能。为了同步颜色,我能够从 YAxis 的 BorderBrush 获取线条的笔触,但是 YAxis 没有 属性 等同于 StrokeDashArray,并且 HResistivitySeries 不是 YAxis 的祖先。

如果 s:AxisTitle 是您自己的对象,请向其添加类型为 DoubleCollection 的 DependencyProperty(或者如果它不是您自己的对象,请尽可能扩展它)。然后在样式中可以做StrokeDashArray="{TemplateBinding MyStrokeDashArrayDependencyProperty}"。然后你可以制作多个其他样式 BasedOn 你的 YAxisTitleStyle 并且只有一个 Setter 用于 MyStrokeDashArrayDependencyProperty。或者,如果您不想制作多个样式,那么您可以执行类似 StrokeDashArray={Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type s:AxisTitle}}, Path=MyStrokeDashArrayDependencyProperty} 的操作,然后您只需在使用样式时更新 MyStrokeDashArrayDependencyProperty。