需要在引用样式时绑定 属性
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。
我使用的样式包含多个元素,但我将在此处的示例代码中仅显示水平线。 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。