C# RadNumericUpDown增量率
我在C#Prism MVVM应用程序中使用TelerikC# RadNumericUpDown增量率,c#,wpf,xaml,telerik,prism,C#,Wpf,Xaml,Telerik,Prism,我在C#Prism MVVM应用程序中使用TelerikRadNumericUpDown控件。当我的用户按住向上或向下箭头时,控件将增加其绑定到的属性的值。但是,当该属性值发生更改时,会通过通信线路向另一个设备发送一个命令,并有一定的延迟。此外,在某些情况下,设备无法成功更改此参数的值 这是我的观点中的代码 <telerik:RadNumericUpDown x:Name="VoltageNumericControl" HorizontalAlignment="
RadNumericUpDown
控件。当我的用户按住向上或向下箭头时,控件将增加其绑定到的属性的值。但是,当该属性值发生更改时,会通过通信线路向另一个设备发送一个命令,并有一定的延迟。此外,在某些情况下,设备无法成功更改此参数的值
这是我的观点中的代码
<telerik:RadNumericUpDown x:Name="VoltageNumericControl" HorizontalAlignment="Left" Margin="165,0,0,0" Grid.RowSpan="1" VerticalAlignment="Center" Grid.Row="2" NumberDecimalDigits="2" Maximum="10.00" Minimum="0.00" SmallChange="0.01" ValueFormat="Numeric"
Value="{Binding ModelDevice.Voltage, Mode=TwoWay, Delay= 50}"/>
如何更改
RadNumericUpDown
控件的行为,以便按住按钮或箭头键不会试图持续更新其绑定属性的值?在外部设备请求挂起时禁用控件,然后再次启用该控件如何,当您有一个响应并且知道正确的值时?从UIElement
派生的每个控件都有一个属性,可用于停用用户输入(控件显示为灰色)
获取或设置一个值,该值指示是否在用户界面(UI)[…]中启用此元素
未启用的元素不参与命中测试或聚焦,因此不会成为输入事件的来源
您可以在视图模型中创建属性IsExternalDeviceNotPending。并将其绑定到RadNumericUpDown
上的IsEnabled
属性。注意.NotPending
(启用意味着无外部设备挂起)。如果要使其成为一个正条件(…Pending
),则必须使用XAML中的值转换器对该值求反,因此这更简单
private bool isExternalDeviceNotPending;
public bool IsExternalDeviceNotPending
{
get => isExternalDeviceNotPending;
private set => SetProperty(ref isExternalDeviceNotPending, value);
}
}
通信完成后,将其重置为
true
,以再次启用控件并允许用户输入。好主意,效果很好!我为布尔(开/关)型开关实现了类似的功能,但并没有考虑将其用于数字控件。谢谢
private bool isExternalDeviceNotPending;
public bool IsExternalDeviceNotPending
{
get => isExternalDeviceNotPending;
private set => SetProperty(ref isExternalDeviceNotPending, value);
}
}
<telerik:RadNumericUpDown x:Name="VoltageNumericControl" IsEnabled="{Binding IsExternalDeviceNotPending}" ... />
public double Voltage
{
get { return voltage; }
set
{
IsExternalDeviceNotPending = false;
dataService.SetVoltage(value);
SetProperty(ref voltage, value);
}
}