[英]DataGrid Selected Item ReactiveUI
我有一本ReactiveList书籍,并且能够使用反应式UI将其绑定到网格。 我试图从datagrid中获取所选项目,以便进一步查询BookService以获得更多详细信息,并在其他网格或datagrid本身的rowdetail中显示详细信息。 我的ViewModel具有以下属性
private ReactiveList<Book> books;
public ReactiveList<Book> Books
{
get
{
return books;
}
set
{
this.RaiseAndSetIfChanged(ref books, value);
}
}
private string selectedBookName;
public string SelectedBookName
{
get
{
return selectedBookName;
}
set
{
this.RaiseAndSetIfChanged(ref selectedBookName, value);
}
}
并且Book对象如下所示
public class Book
{
public string Name{get;set;}
public decimal Price{get;set;}
.
.
.//other properties
}
我试图获取所选书的名称,并将其分配给viewmodel构造函数中的SelectedBookName。
this.WhenAnyObservable(x=>x.Books.ItemChanged).Select(x => selectedBookName= ((Book)x).Name);
但这对我没有用。 我是否缺少某些东西,或者我需要按照其他方式进行操作
也可以将datagrid SelectedItem
直接绑定到视图模型中的属性,该模型提供对整个对象的访问
this.Bind(ViewModel, x => x.SelectedBook, x => x.DataGridBooks.SelectedItem);
如果只需要书名,则可以使用SelectedValue
我看到两个问题:
ReactiveList
进行更改的Observable,因此不会获得任何更新。 您可能想要: this.WhenAnyObservable(x=>x.Books.ItemChanged).Subscribe(x => selectedBookName= ((Book)x).Name);
ReactiveObject
永远不会知道绑定属性已更改。 您更可能打算执行SelectedBookName = ((Book)x).Name);
请注意,如果要更改通知绑定,应将大写字母分配给属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.