如何将字段绑定到仪表控件?

时间:2015-02-01 19:30:47

标签: c# wpf xaml gauge data-binding

我已经从这个类https://github.com/JohanLarsson/GaugeBox添加了一个WPF规范控件,但我不确定如何将控件连接到后面代码中声明的double degreeOutput类型的字段。

我的目标是将degreeOutput绑定到仪表控件上,并使degreeOutput的值相应地更新仪表。

我在设置控件时遵循的过程是:

1)将控件添加到用户控件的xaml布局并声明命名空间 xmlns:gauges="clr-namespace:Gauges;assembly=Gauges"

2)将value属性设置为Value="{Binding degreeOutput}"

3)运行应用程序,(但是仪表不会按照更新 学位读数从degreeOutput)输出

有没有人知道在将控件绑定到学位字段时我缺少哪一步?

这是guage控件的xaml布局:

    <gauges:Gauge x:Name="Gauge"
                          Grid.Row="0"
                          Margin="13,18,134,134"
                          HorizontalAlignment="Stretch"
                          VerticalAlignment="Stretch"
                          Marker="{Binding Marker}"
                          Maximum="{Binding Max}"
                          Minimum="{Binding Min}"
                          Placement="{Binding Placement}"
                          ShowLabels="{Binding ShowLabels}"
                          ShowMajorTicks="{Binding ShowTicks}"
                          ShowTrack="{Binding ShowTrack}"
                          TickFrequency="{Binding TickFrequency}"
                          Value="{Binding degreeOutput}" RenderTransformOrigin="0.5,0.5">
        <gauges:Gauge.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="-89.868"/>
                <TranslateTransform/>
            </TransformGroup>
        </gauges:Gauge.RenderTransform>
        <gauges:Gauge.Background>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                <LinearGradientBrush.GradientStops>
                    <GradientStopCollection>
                        <GradientStop Offset="0.0" Color="Red" />
                        <GradientStop Offset="0.10" Color="Red" />
                        <GradientStop Offset="0.10" Color="Green" />
                        <GradientStop Offset="0.90" Color="Green" />
                        <GradientStop Offset="0.90" Color="Red" />
                        <GradientStop Offset="1.0" Color="Red" />
                    </GradientStopCollection>
                </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
        </gauges:Gauge.Background>
    </gauges:Gauge>

声明degreeOutput的背后的代码:

        private double degreeOutput;

1 个答案:

答案 0 :(得分:1)

一般来说,您无法绑定到WPF中的字段(请参阅this SO question的答案)。

尝试将degreeOutput更改为公共财产。这足以将初始值输入仪表控件。

如果您还希望由仪表控件进行更改以反馈到您的属性中,则包含该属性的类也必须实现INotifyPropertyChanged