C# 需要在引用某个特性时将其绑定到样式中
我使用的样式包含几个元素,但我将在这里的示例代码中仅显示水平线。尚未定义该行的StrokeDashArrayC# 需要在引用某个特性时将其绑定到样式中,c#,wpf,xaml,C#,Wpf,Xaml,我使用的样式包含几个元素,但我将在这里的示例代码中仅显示水平线。尚未定义该行的StrokeDashArray <Style x:Key="YAxisTitleStyle" TargetType="s:AxisTitle"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate>
<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}”
。然后,您可以创建基于您的YaxistItList样式的多个其他样式,并且只有MyStrokeDashArrayDependencyProperty的Setter。或者,如果您不想创建多个样式,那么可以执行类似以下操作:StrokeDashArray={Binding RelativeSource={RelativeSource Mode=FindAncestor,antestortype={x:Type s:axisttitle}},Path=MyStrokeDashArrayDependencyProperty}
然后只要在使用样式时更新MyStrokeDashArrayDependencyProperty即可。存在多少种颜色组合?是只有两种颜色,还是(在本例中)Stroke
s的颜色更多?StrokeDashArray实际上依赖于什么?是否在YAxis
元素中静态声明?还是依赖于其他物体?YAxis的类型是什么?你能给它加一个属性吗?请证明这充分说明了问题。这似乎是一个合理的建议。该对象不是我的,我正在使用SciChart图形库。我已经扩展了他们的一些类,以获得一些特殊的行为,效果很好。从您的回答中,我可以看出我没有遗漏任何特殊的XAML魔法,因此您的回答似乎是最好的选择。