C# 无法对Telerik中的其他Y轴使用绑定
我在WPF中使用Telerik的RadChart,当我想为额外的Y轴指定MaxValue、MinValue和Step时,我遇到了一个问题 如果我像这样硬编码这些值(相关部分是最后四行),效果很好: 我以为我在某个地方犯了一个错误,搜索了几个小时,但我发现了一些奇怪的事情:如果我在“原始”Y轴上使用这些绑定,一切都会完美地工作。两个轴的代码完全相同。唯一的区别在于父元素 这项工作:C# 无法对Telerik中的其他Y轴使用绑定,c#,wpf,telerik,C#,Wpf,Telerik,我在WPF中使用Telerik的RadChart,当我想为额外的Y轴指定MaxValue、MinValue和Step时,我遇到了一个问题 如果我像这样硬编码这些值(相关部分是最后四行),效果很好: 我以为我在某个地方犯了一个错误,搜索了几个小时,但我发现了一些奇怪的事情:如果我在“原始”Y轴上使用这些绑定,一切都会完美地工作。两个轴的代码完全相同。唯一的区别在于父元素 这项工作: <Controls:ChartArea.AxisY> <Controls:AxisY Mi
<Controls:ChartArea.AxisY>
<Controls:AxisY MinorTicksVisibility="Hidden"
DefaultLabelFormat="#VAL{#,##0}"
Title="{UI:Language @{GigaJoulePerHourSymbol}}"
MajorGridLinesVisibility="Hidden"
StripLinesVisibility="Visible"
AutoRange="False"
MaxValue="{Binding Path=MyMaxValue}"
MinValue="{Binding Path=MyMinValue}"
Step="{Binding Path=MyStep}">
<Controls:AxisY.AxisStyles>
<Controls:AxisStyles TitleStyle="{StaticResource TranslatedAxisStyle}" />
</Controls:AxisY.AxisStyles>
</Controls:AxisY>
</Controls:ChartArea.AxisY>
这并不是:
<Controls:ChartArea.AdditionalYAxes>
<Controls:AxisY MinorTicksVisibility="Hidden"
DefaultLabelFormat="#VAL{#,##0}"
Title="{UI:Language @{xCubicMetrePerHourSymbol}}"
MajorGridLinesVisibility="Hidden"
StripLinesVisibility="Visible"
AxisName="CubicMetrePerHourAxis"
AutoRange="False"
MaxValue="{Binding Path=MyMaxValue}"
MinValue="{Binding Path=MyMinValue}"
Step="{Binding Path=MyStep}">
<Controls:AxisY.AxisStyles>
<Controls:AxisStyles TitleStyle="{StaticResource TranslatedAxisStyle}" />
</Controls:AxisY.AxisStyles>
</Controls:AxisY>
</Controls:ChartArea.AdditionalYAxes>
元素本身是完全相同的,除了第二个元素有一个名称和标题不同,但是我测试了它,它实际上并不影响任何东西。唯一的区别是父元素不同
我想知道为什么AxisY可以看到DataContext并可以正确绑定,而AdditionalYAxis不能。由于
AdditionalYAxis
可能不在中,它将不会继承其逻辑树父级的DataContext
。这就解释了为什么绑定不能正常工作。您可以使用一种类似于所概述的(“数据上下文间谍”)的解决方法来使绑定正常工作。可能(我猜)是因为AdditionalYAxes
不在可视化树中。看看你是否可以应用其中一个标准的解决方法,例如:@McGarnagle It works!非常感谢,我永远不会知道怎么做。如果你想让我接受,就把这个作为答案贴出来。
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or
FrameworkContentElement for target element. BindingExpression:Path=MyMaxValue;
DataItem=null; target element is 'AxisY' (HashCode=47300984); target property is
'MaxValue' (type 'Double')
<Controls:ChartArea.AxisY>
<Controls:AxisY MinorTicksVisibility="Hidden"
DefaultLabelFormat="#VAL{#,##0}"
Title="{UI:Language @{GigaJoulePerHourSymbol}}"
MajorGridLinesVisibility="Hidden"
StripLinesVisibility="Visible"
AutoRange="False"
MaxValue="{Binding Path=MyMaxValue}"
MinValue="{Binding Path=MyMinValue}"
Step="{Binding Path=MyStep}">
<Controls:AxisY.AxisStyles>
<Controls:AxisStyles TitleStyle="{StaticResource TranslatedAxisStyle}" />
</Controls:AxisY.AxisStyles>
</Controls:AxisY>
</Controls:ChartArea.AxisY>
<Controls:ChartArea.AdditionalYAxes>
<Controls:AxisY MinorTicksVisibility="Hidden"
DefaultLabelFormat="#VAL{#,##0}"
Title="{UI:Language @{xCubicMetrePerHourSymbol}}"
MajorGridLinesVisibility="Hidden"
StripLinesVisibility="Visible"
AxisName="CubicMetrePerHourAxis"
AutoRange="False"
MaxValue="{Binding Path=MyMaxValue}"
MinValue="{Binding Path=MyMinValue}"
Step="{Binding Path=MyStep}">
<Controls:AxisY.AxisStyles>
<Controls:AxisStyles TitleStyle="{StaticResource TranslatedAxisStyle}" />
</Controls:AxisY.AxisStyles>
</Controls:AxisY>
</Controls:ChartArea.AdditionalYAxes>