当前位置: 首页 > wzjs >正文

合肥网站建设 乐云seo搜索引擎关键词怎么选

合肥网站建设 乐云seo,搜索引擎关键词怎么选,服装如何做微商城网站,免费做金融网站🌲WPF 教程:给 TreeView 添加 SelectedItem 双向绑定支持(MVVM-Friendly) 在 WPF 的 MVVM 应用中,TreeView 是非常常见的控件,但它有个“顽固”的缺陷: ❗它的 SelectedItem 不是依赖属性&…

🌲WPF 教程:给 TreeView 添加 SelectedItem 双向绑定支持(MVVM-Friendly)

在 WPF 的 MVVM 应用中,TreeView 是非常常见的控件,但它有个“顽固”的缺陷:

❗它的 SelectedItem 不是依赖属性,无法直接绑定到 ViewModel

这对于追求纯粹 MVVM 架构的开发者来说,很不友好。别担心,本文将教你如何写一个自定义 Behavior,让 TreeView 也能优雅地绑定 SelectedItem


🧠 核心思路

利用 Microsoft.Xaml.Behaviors.Wpf 提供的 Behavior<T>,监听 TreeView.SelectedItemChanged 事件,并同步绑定到 ViewModel,同时支持反向设置。


🧙‍♂️ 魔法代码:BindableSelectedItemBehavior.cs

using Microsoft.Xaml.Behaviors;namespace MVBuilder.Behaviours
{/// <summary>/// 让 WPF TreeView 支持 SelectedItem 双向绑定的行为类。/// 应用于 TreeView 后,可在 ViewModel 中直接使用绑定方式访问/设置选中项。/// </summary>public class BindableSelectedItemBehavior : Behavior<TreeView>{/// <summary>/// 可绑定的 SelectedItem 属性(同步 TreeView.SelectedItem)/// </summary>public object? SelectedItem{get => GetValue(SelectedItemProperty);set => SetValue(SelectedItemProperty, value);}/// <summary>/// SelectedItem 依赖属性注册/// </summary>public static readonly DependencyProperty SelectedItemProperty =DependencyProperty.Register(nameof(SelectedItem),typeof(object),typeof(BindableSelectedItemBehavior),new UIPropertyMetadata(null, OnSelectedItemChanged));/// <summary>/// 当 SelectedItem 属性变化时,选中对应的 TreeViewItem/// </summary>private static void OnSelectedItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e){if (e.NewValue is TreeViewItem item){item.SetValue(TreeViewItem.IsSelectedProperty, true);}}/// <summary>/// 附加行为时,注册 TreeView 的 SelectedItemChanged 事件/// </summary>protected override void OnAttached(){base.OnAttached();AssociatedObject.SelectedItemChanged += OnTreeViewSelectedItemChanged;}/// <summary>/// 移除行为时,注销事件,避免内存泄漏/// </summary>protected override void OnDetaching(){base.OnDetaching();AssociatedObject.SelectedItemChanged -= OnTreeViewSelectedItemChanged;}/// <summary>/// 当 TreeView 选中项变化,更新 SelectedItem 依赖属性(同步到 ViewModel)/// </summary>private void OnTreeViewSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e){SetCurrentValue(SelectedItemProperty, e.NewValue);}}
}

🧰 NuGet 引用
确保你的项目安装了以下包:

Microsoft.Xaml.Behaviors.Wpf

🔧 使用方式(XAML 示例)

<TreeView ItemsSource="{Binding TreeNodes}" x:Name="tree"><i:Interaction.Behaviors><behaviors:BindableSelectedItemBehavior SelectedItem="{Binding SelectedNode, Mode=TwoWay}" /></i:Interaction.Behaviors>
</TreeView>

ViewModel 示例代码

private TreeNodeModel? _selectedNode;
public TreeNodeModel? SelectedNode
{get => _selectedNode;set => SetProperty(ref _selectedNode, value);
}

📌 总结一句话
WPF 的 TreeView 不支持绑定 SelectedItem?
没事,我们自己写个 Behavior 就能完美解决!🌟

希望这段小而强的代码能帮你彻底解决 WPF 中 SelectedItem 无法绑定的问题,继续写出纯粹、高质量的 MVVM 应用。

http://www.dtcms.com/wzjs/151395.html

相关文章:

  • 电商入门教学关键词优化推广
  • 网站有什么模块网站搜索量查询
  • 同ip网站有什么危害软文广告文案案例
  • 网站登录注册怎么做营销模式有哪些 新型
  • wordpress可以做门户网站无锡网站建设方案优化
  • 类qq留言网站建设建立公司网站需要多少钱
  • 天津市做网站的公司网络推广app
  • 攸县做网站的网络营销软文范例500字
  • 政府系统建设网站请示万能的搜索引擎
  • 十堰做网站最好的公司百度推广怎么注册账号
  • 小红书账号代运营银川网站seo
  • 广西建设学院官方网优化营商环境心得体会1000字
  • 提示网站建设页面海外营销方案
  • 给军方做网站套模板行不行网络营销网站设计
  • 怎么查网站的备案信息什么是搜索关键词
  • 出口外贸网站建设网站优化网络推广seo
  • 电子政务网站建设公司排行榜购买模板建站
  • 番禺人才网最新司机招聘seo的中文名是什么
  • 网站收款即时到账怎么做的seo网站分析工具
  • 扒站wordpress主题网站排名快速提升
  • 单页网站制作需要多少钱徐州百度seo排名优化
  • 网站搭建策略与方法有哪些方面重庆百度竞价推广
  • 阿里巴巴做网站难吗网络搭建是干什么的
  • 关于网站建设需要了解什么东西免费做推广的网站
  • 台中网站建设网络营销以什么为中心
  • 网站制作三站精准营销系统
  • 池州哪里有做网站b站免费建网站
  • 网站建设手机端站长资讯
  • 新网站建设流程图效果好的东莞品牌网站建设
  • 为什么想做网站运营网站查询服务器