【发布时间】:2012-08-29 13:58:58
【问题描述】:
我正在开发一个CustomControl,它公开了DependencyProperty SearchRange,它基于自定义类Range。
public class MyCustomControl : Control
{
public static readonly DependencyProperty SearchRangeProperty
= DependencyProperty.Register(
"SearchRange",
typeof (Range<DateTime>),
typeof (VariableBrowser));
// ...
public Range<DateTime> SearchRange
{
get { return (Range<DateTime>)this.GetValue(SearchRangeProperty); }
set { this.SetValue(SearchRangeProperty, value); }
}
// ...
}
Range 类包含两个不同的属性,Minimum 和 Maximum,它实现了INotifyPropertyChanged。
public class Range<T> : INotifyPropertyChanged where T : IComparable
{
private T _maximum;
private T _minimum;
public T Maximum
{
get { return this._maximum; }
set
{
this._maximum = value;
this.OnPropertyChanged("Maximum");
}
}
public T Minimum
{
get { return this._minimum; }
set
{
this._minimum = value;
this.OnPropertyChanged("Minimum");
}
}
// ...
}
我遵循的规范要求使用我的自定义控件的应用程序只能绑定到 SearchRange 属性,以便读取其内部值(Minimum 和 Maximum),因为这些必须由我的CustomControl 在内部处理和设置。在SearchRange 属性或其内部属性(Minimum 和Maximum)发生任何变化后,应更新绑定目标,而无需重新分配整个SearchRange。
或者,我应该允许直接绑定到内部属性(SearchRange.Minimum 和 SearchRange.Maximum)。
我尝试了许多不同的方法来达到这个结果,但没有一个成功。我怎样才能获得所需的结果?
提前致谢。
【问题讨论】:
-
你试过什么?您应该能够像绑定到任何其他属性一样直接绑定到这些属性;您是否遇到了特殊问题,或者您不知道如何使用数据绑定?
标签: c# wpf binding dependency-properties