将String绑定到richtextbox

时间:2014-03-06 22:21:03

标签: wpf xaml

我有一个填充了“notes”的数据网格,当点击一个笔记时,我希望richtextbox显示note.comments。但Bindings无效。

public NoteDTO SelectedNote {get; set;}
public string stringNotes {get; set;}

public void OpenNote()
{
    stringNotes = SelectedNote.Comments;
}



<DataGrid x:Name="NoteGrid" cal:Message.Attach="[Event MouseDoubleClick] = [Action OpenNote()]" ItemsSource="{Binding Notes}" SelectedItem="{Binding SelectedNote}"


<toolkit:RichTextBox Text="{Binding stringNotes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

如果我可以得到帮助,请

1 个答案:

答案 0 :(得分:2)

主要问题是你绑定了一个没有变更通知概念的属性;你没有实施INotifyPropertyChanged。话虽如此,为什么不直接将RichTextBox绑定到NoteDTO之外的属性:

<toolkit:RichTextBox Text="{Binding SelectedNote.Comments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

另一个选项是在SelectedNotestringNotes之间手动复制评论,然后实施INotifyPropertyChanged,但这并不理想,除非您希望在传播它们之前拥有中间属性到NoteDTO对象。

编辑:

我注意到您的SelectedNote属性永远不会通知UI它已更改,这将阻止绑定工作。尝试以下内容:

public class MyClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        if(this.PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

    private string selectedNote;
    public string SelectedNote
    {
        get { return this.selectedNote; }
        set
        {
            if (this.selectedNote == value)
                return;

            this.selectedNote = value;
            this.OnPropertyChanged("SelectedNote");
        }
    }
}