我有一个小问题,但发现了很多不同的、而且大多是模棱两可的答案:
我有以下用户控件,我试图绑定到该控件中的公共属性(事件)。每个人都说我必须使用数据上下文,但是,我真的不想这样做......我只想从控件的内部绑定到属性
XAML...
要求是绑定必须是两种方式,以便 ui 中的任何更改都将反映在其绑定的属性(或更确切地说是集合)中。该集合中的每个 Event 对象也以与此控件相同的方式实现 INotifyPropertyChanged...
任何想法将不胜感激!
public partial class EventEditorWindow : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Event> events;
public ObservableCollection<Event> Events
{
get { return this.events; }
set
{
if( this.events != value )
{
this.events = value;
this.RaisePropertyChanged("Events");
}
}
}
private void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
this.VerifyPropertyName(propertyName);
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
var currentObjectType = this.GetType();
if (currentObjectType.GetProperty(propertyName) == null)
{
throw new ArgumentException("Property not found", propertyName);
}
}
}
谢谢,
布利普兹特。
在构造函数中,设置 DataContext = this.这将有效地使您的代码位于 DataContext 后面。 AFAIK,你不能完全避免某物数据上下文。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)