c# – 焦点更改时更改绑定

c# – 焦点更改时更改绑定,第1张

概述我有一个具有多个树视图和一个propertygrid的应用程序(来自扩展的 WPF工具包).目标是显示所选项目的属性.我是WPF的新手,所以我从一个树视图开始,并像这样绑定propertygrids选择的对象 <xctk:PropertyGrid x:Name="xctkPropertyGrid" Grid.Column="2" 我有一个具有多个树视图和一个propertygrID的应用程序(来自扩展的 WPF工具包).目标是显示所选项目的属性.我是WPF的新手,所以我从一个树视图开始,并像这样绑定propertygrIDs选择的对象

<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# – 焦点更改时更改绑定所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存