如何将字段绑定到仪表控件?
How to bind a field to a gauge control?
我已经从这个 class https://github.com/JohanLarsson/GaugeBox 添加了一个 WPF 仪表控件,但我不确定如何将控件连接到一个声明为 double degreeOutput
类型的字段后面的代码。
我的目标是将 degreeOutput
绑定到仪表控件,并使来自 degreeOutput
的值相应地更新仪表。
我在设置控件时遵循的过程是:
1)将控件添加到用户控件的xaml布局中并声明命名空间
xmlns:gauges="clr-namespace:Gauges;assembly=Gauges"
2)设置值属性为Value="{Binding degreeOutput}"
3)运行申请,(但仪表没有按照
degreeOutput
)
输出度数
有谁知道我在将控件绑定到我的学位领域时缺少哪一步?
这是仪表控件的 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;
一般来说,您不能绑定到 WPF 中的 字段 (请参阅 this SO question 的答案)。
尝试将 degreeOutput
更改为 public 属性。这足以将初始值输入仪表控件。
如果您还希望仪表控件所做的更改反馈到您的 属性,那么包含 属性 的 class 也必须实现 INotifyPropertyChanged
。
我已经从这个 class https://github.com/JohanLarsson/GaugeBox 添加了一个 WPF 仪表控件,但我不确定如何将控件连接到一个声明为 double degreeOutput
类型的字段后面的代码。
我的目标是将 degreeOutput
绑定到仪表控件,并使来自 degreeOutput
的值相应地更新仪表。
我在设置控件时遵循的过程是:
1)将控件添加到用户控件的xaml布局中并声明命名空间
xmlns:gauges="clr-namespace:Gauges;assembly=Gauges"
2)设置值属性为Value="{Binding degreeOutput}"
3)运行申请,(但仪表没有按照
degreeOutput
)
有谁知道我在将控件绑定到我的学位领域时缺少哪一步?
这是仪表控件的 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;
一般来说,您不能绑定到 WPF 中的 字段 (请参阅 this SO question 的答案)。
尝试将 degreeOutput
更改为 public 属性。这足以将初始值输入仪表控件。
如果您还希望仪表控件所做的更改反馈到您的 属性,那么包含 属性 的 class 也必须实现 INotifyPropertyChanged
。