问题:
当我通过Slider或NumericUpDown更改GUI中“ LuxVoltage ”的值时,Value从“默认值”(在本例中为0)跳转到“实际值”。假设我将Value设置为1000并打印出每一组,这就是输出的样子(它有点“闪烁”):
输出:
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); }
}
要求:
我需要从两个控件中操纵相同的值。 “滑块”只需快速更改值,“ NumericUpDown ”即可提供精确度
答案 0 :(得分:0)
我不知道你为什么会出现闪烁问题,但是当我过去有两个由一个值链接的GUI事物时,我总是选择这种方法(使用你的情况) )将NumericUpDown绑定到viewmodel中的属性,然后将Slider绑定到NumericUpDown属性。它可能适合你。
答案 1 :(得分:0)
Slider的值类型是double。当您绑定到ushort时,即使滑块不移动,也会导致多次更新。然后可能会导致其他控件触发其他更改,请尝试将其添加到Slider绑定中,这样当您拖动滑块时,它只会按默认为“1.0”的刻度频率递增。
IsSnapToTickEnabled="True"
答案 2 :(得分:0)
似乎实际问题存在于我的代码库中的其他地方。
- 从2个控件绑定到一个属性可以正常工作。
- 或者考虑将其中一个控件绑定到另一个控件的值,其值绑定到Property *
答案 3 :(得分:0)
在调用SetProperty之前,请尝试检查setter上的传入值以进行有意义的更改。
private ushort _luxVoltage = 0;
public ushort LuxVoltage
{
get { return _luxVoltage; }
set
{
if (_luxVoltage != value)
{
SetProperty(ref _luxVoltage, value);
}
}
}