数据绑定 属性 值 "Flickers"
Data-Binding Property Value "Flickers"
问题:
当我通过滑块或 NumericUpDown 在 GUI 中更改“LuxVoltage”的值时,值从“默认值跳转”(在本例中为 0)到“实际值”。假设我将值设置为 1000 并打印出每个集合,这就是输出的样子(有点像“flickers”):
输出:
0
1000
0
1000
[repeat]
XAML:(使用MahApps.Metro "NumericUpDown")
<metro:NumericUpDown
Value="{Binding LuxVoltage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Minimum="0"
Maximum="65535"
/>
<Slider
Value="{Binding LuxVoltage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Minimum="0"
Maximum="65535"
/>
C#:(使用棱镜 "BindableBase")
private ushort _luxVoltage = 0;
public ushort LuxVoltage
{
get { return _luxVoltage; }
set { SetProperty(ref _luxVoltage, value); }
}
要求:
我需要从两个控件操纵相同的值。 “slider”可以简单地快速更改值,而“NumericUpDown”提供精度
我不知道你为什么有闪烁问题,但是当我过去有两个 GUI 东西从一个值链接起来时,我总是采用绑定的方法(使用你的案例) NumericUpDown 到您的视图模型中的 属性,然后将 Slider 绑定到 NumericUpDown 属性。它可能适合你。
Slider的Value类型是double。当您绑定到 ushort 时,即使滑块没有移动,也会导致多次更新。这可能会导致其他控件触发其他更改,请尝试将其添加到 Slider 绑定中,这样当您拖动滑块时,它只会按默认为“1.0”的刻度频率递增。
IsSnapToTickEnabled="True"
似乎实际问题存在于我的代码库中的其他地方。
- Binding from 2 Controls to one Property schould just work fine.
- Or consider binding one of the Controls to the value of the other, whose value is bound to the Property*
在调用 SetProperty 之前,请尝试检查 setter 上的传入值以进行有意义的更改。
private ushort _luxVoltage = 0;
public ushort LuxVoltage
{
get { return _luxVoltage; }
set
{
if (_luxVoltage != value)
{
SetProperty(ref _luxVoltage, value);
}
}
}
问题:
当我通过滑块或 NumericUpDown 在 GUI 中更改“LuxVoltage”的值时,值从“默认值跳转”(在本例中为 0)到“实际值”。假设我将值设置为 1000 并打印出每个集合,这就是输出的样子(有点像“flickers”):
输出:
0
1000
0
1000
[repeat]
XAML:(使用MahApps.Metro "NumericUpDown")
<metro:NumericUpDown
Value="{Binding LuxVoltage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Minimum="0"
Maximum="65535"
/>
<Slider
Value="{Binding LuxVoltage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Minimum="0"
Maximum="65535"
/>
C#:(使用棱镜 "BindableBase")
private ushort _luxVoltage = 0;
public ushort LuxVoltage
{
get { return _luxVoltage; }
set { SetProperty(ref _luxVoltage, value); }
}
要求:
我需要从两个控件操纵相同的值。 “slider”可以简单地快速更改值,而“NumericUpDown”提供精度
我不知道你为什么有闪烁问题,但是当我过去有两个 GUI 东西从一个值链接起来时,我总是采用绑定的方法(使用你的案例) NumericUpDown 到您的视图模型中的 属性,然后将 Slider 绑定到 NumericUpDown 属性。它可能适合你。
Slider的Value类型是double。当您绑定到 ushort 时,即使滑块没有移动,也会导致多次更新。这可能会导致其他控件触发其他更改,请尝试将其添加到 Slider 绑定中,这样当您拖动滑块时,它只会按默认为“1.0”的刻度频率递增。
IsSnapToTickEnabled="True"
似乎实际问题存在于我的代码库中的其他地方。
- Binding from 2 Controls to one Property schould just work fine.
- Or consider binding one of the Controls to the value of the other, whose value is bound to the Property*
在调用 SetProperty 之前,请尝试检查 setter 上的传入值以进行有意义的更改。
private ushort _luxVoltage = 0;
public ushort LuxVoltage
{
get { return _luxVoltage; }
set
{
if (_luxVoltage != value)
{
SetProperty(ref _luxVoltage, value);
}
}
}