<xctk:PropertyGrID x:name="xctkPropertyGrID" GrID.Column="2" ShowSearchBox="False" ShowSortoptions="False" Selectedobject="{Binding Elementname=actionsTreeVIEw,Path=SelectedItem,Mode=OneWay}"></xctk:PropertyGrID>
这似乎工作正常.但它当然会一直绑定到actionsTreeVIEw.当焦点更改为另一个树视图中的另一个选定项时,我真正需要的是更新该属性网格.我已经使用每个树视图的selecteditemchanged实现了我的目标,并像这样设置了propertygrIDs selectedobject.这是否可能使用数据绑定和触发器.我的解决方案增加了一些代码和紧密耦合,并且感觉不是很MVVM.
亲切的问候,
杰夫
每个树视图都绑定到主视图模型上的vIEmodel属性.我还在主视图模型上创建了一个SelectedItem属性,像这样绑定了propertygrID的Selectedobject:
private object selectedItem;public object SelectedItem{ get { return selectedItem; } set { selectedItem = value; OnPropertyChanged("SelectedItem"); }}
然后,我将一个行为附加到每个更新此SelectedItem的树视图:
public class UpdateSelectedItemBehavior : Behavior<TreeVIEw>{ protected overrIDe voID OnAttached() { base.OnAttached(); this.Associatedobject.GotFocus += Associatedobject_GotFocus; this.Associatedobject.selecteditemchanged += Associatedobject_selecteditemchanged; } voID Associatedobject_selecteditemchanged(object sender,RoutedPropertyChangedEventArgs<object> e) { viewmodels.Mainviewmodel mainviewmodel = Associatedobject.DataContext as viewmodels.Mainviewmodel; if (mainviewmodel != null) { mainviewmodel.SelectedItem = Associatedobject.SelectedItem; } } voID Associatedobject_GotFocus(object sender,RoutedEventArgs e) { viewmodels.Mainviewmodel mainviewmodel = Associatedobject.DataContext as viewmodels.Mainviewmodel; if (mainviewmodel != null) { mainviewmodel.SelectedItem = Associatedobject.SelectedItem; } }}总结
以上是内存溢出为你收集整理的c# – 焦点更改时更改绑定全部内容,希望文章能够帮你解决c# – 焦点更改时更改绑定所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)