C# 作为样式的setter值绑定到边距

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

我正在尝试将图表轴标签的边距绑定到属性

我认为这将是下面代码的一个简单例子,它在没有绑定的情况下工作

XAML

这对利润率没有影响,你知道我做错了什么吗

编辑:我在输出窗口中遇到以下错误


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>