C# 作为样式的setter值绑定到边距
我正在尝试将图表轴标签的边距绑定到属性 我认为这将是下面代码的一个简单例子,它在没有绑定的情况下工作 XAML 这对利润率没有影响,你知道我做错了什么吗 编辑:我在输出窗口中遇到以下错误C# 作为样式的setter值绑定到边距,c#,wpf,mvvm,data-binding,C#,Wpf,Mvvm,Data Binding,我正在尝试将图表轴标签的边距绑定到属性 我认为这将是下面代码的一个简单例子,它在没有绑定的情况下工作 XAML 这对利润率没有影响,你知道我做错了什么吗 编辑:我在输出窗口中遇到以下错误 System.Windows.Data错误:40:BindingExpression路径错误:“在”“object”“Double”“HashCode=1072693248”“上找不到LabelMargin”属性。BindingExpression:Path=LabelMargin;DataItem='Doub
System.Windows.Data错误:40:BindingExpression路径错误:“在”“object”“Double”“HashCode=1072693248”“上找不到LabelMargin”属性。BindingExpression:Path=LabelMargin;DataItem='Double'HashCode=1072693248;目标元素为'NumericAxisLabel'Name=;目标属性是“Margin”类型“Thickness”这样的东西怎么样:
<DVC:LinearAxis Orientation="X" Interval="0.5" ShowGridLines="True">
<DVC:LinearAxis.AxisLabelStyle>
<Style TargetType="{x:Type DVC:AxisLabel}">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DVC:LinearAxis}}, Path=DataContext.LabelMargin}" />
</Style>
</DVC:LinearAxis.AxisLabelStyle>
</DVC:LinearAxis>
看起来LinearAxis的DataContext错误,即不是您的ViewModel我刚刚尝试在LinearAxis上显式设置DataContext,没有更改。在这个视图中,我有大量其他属性绑定到视图模型,这些属性都很好。这是唯一一个在一个风格设定者里面的。这很有效。我不明白为什么:-/@mister_b显然AxisLabelStyle不会继承或以某种方式覆盖当前的DataContext。因此,必须使用其祖先元素的DataContext。
private Thickness _labelMargin;
public Thickness LabelMargin
{
get { return _labelMargin; }
set { SetPropertyAndNotify(ref _labelMargin, value); }
}
<DVC:LinearAxis Orientation="X" Interval="0.5" ShowGridLines="True">
<DVC:LinearAxis.AxisLabelStyle>
<Style TargetType="{x:Type DVC:AxisLabel}">
<Setter Property="Margin" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DVC:LinearAxis}}, Path=DataContext.LabelMargin}" />
</Style>
</DVC:LinearAxis.AxisLabelStyle>
</DVC:LinearAxis>