c# MValue属性包裹上限和下限值
时间: 2024-09-23 14:01:20 浏览: 29
GO语言中的方法值和方法表达式的使用方法详解
在 C# 中,`MValue` 或 `MultiValue` 属性通常用于表示范围值,它会同时包含一个最小值(LowerBound)和最大值(UpperBound)。这样的设计常用于滑块控件(Slider)或者需要指定区间限制的场景,用户可以调整数值时,始终保持在这个范围内。
下面是一个简单的例子,展示如何创建一个拥有 `LowerBound` 和 `UpperBound` 的 `MValue` 属性:
```csharp
public class RangeControl
{
[DisplayName("范围值")]
[Category("范围设置")]
public MValue<double> RangeValue
{
get { return rangeValue; }
set
{
if (value.Value >= LowerBound && value.Value <= UpperBound)
{
rangeValue = value;
OnPropertyChanged("RangeValue");
}
}
}
private MValue<double> rangeValue = new MValue<double>(DefaultRangeValue, LowerBound, UpperBound);
public double DefaultRangeValue { get; set; } = 50.0;
public double LowerBound { get; set; } = 0.0;
public double UpperBound { get; set; } = 100.0;
protected virtual void OnPropertyChanged(string propertyName)
{
// 触发依赖于 RangeValue 的视图更新
var handler = PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
// 省略了其他可能的方法,如依赖注入的PropertyChanged事件处理
}
```
当你试图改变 `RangeValue` 时,如果新值超出了 `LowerBound` 和 `UpperBound`,则不会接受该更改,并触发 `OnPropertyChanged` 来更新视图。
阅读全文