c# - 如何在不使用 DataContext 的情况下绑定(bind)到 Silverlight 中的本地属性?

标签 c# silverlight data-binding silverlight-4.0

我有一个小问题,但已经找到了很多不同的,而且大多是模棱两可的答案:

我有以下用户控件,我正在尝试绑定(bind)到该控件(事件)中的公共(public)属性。每个人都说我必须使用数据上下文,但是,我真的不想那样做......我只想从控件的内部绑定(bind)到属性 XAML...

要求是绑定(bind)必须是双向的,因此 ui 中的任何更改都将反射(reflect)在它绑定(bind)到的属性(或更确切地说是集合)中。该集合中的每个 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,您无法完全避免使某物成为 DataContext。

关于c# - 如何在不使用 DataContext 的情况下绑定(bind)到 Silverlight 中的本地属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102453/

相关文章:

javascript - 如何在网页中访问基本的 JSIL 库(来自 C#)?

wpf - 附加属性的各种用途是什么?

php - 如何在数据更改时更新 UI?

c# - 带有用于搜索的文本框的 DataTemplate

silverlight - 使用 <UserControl.Resources> 时,无法在 Designer 中创建 "ObjectName"的实例

android - ToggleButton 的 MvxBind 仅在发布版本中失败

c# - 如何在不实例化它们的情况下测试两个泛型是否具有基子类关系?

C# 在 SQL Server 中存储文本以进行全文搜索

c# - 查询更新我所有的数据,而不是只更新我想要的数据

ASP.NET 或 ASP.NET MVC 或 Silverlight 或混合?