我被这个SB的WPF treeview 节点重命名,折腾了7个小时,大神们来救救我,指个招, 问题简单,附有代码.

Ptrtoptr 2014-06-24 11:02:46
我用TreeView 绑定了 ObservableCollection集合做数据源.
//按说ObservableCollection集合, 数据更新,界面也应该同步,
但是界面没有变化. 代码如下:


<TreeView x:Name="tv" SelectedItemChanged="SelectedItemChanged">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ContextMenu>
<ContextMenu >
<MenuItem Header="重命名" Name="rename" Click="rename_Click"></MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
</TreeView>
/////
public partial class Abb : Window {
public Abb() {
InitializeComponent();
Item item = new Item() { Name = "parent" , Items= new ObservableCollection<Item>()};
item.Items.Add(new Item(){Name="child1"});
item.Items.Add(new Item(){Name="child2"});
ObservableCollection<Item> list = new ObservableCollection<Item>();
list.Add(item);
tv.ItemsSource = list;
}
private void rename_Click(object sender, RoutedEventArgs e) {
Item item = tv.SelectedItem as Item;
item.Name = "new Name";
//按说是ObservableCollection集合, 这里的数据更新,界面也应该同步,但是界面没有变化
//请问怎么处理能让界面同步更新,
//我试过tv.items.Refresh() ,它可以让界面同步,不过它会把整个树都折叠起来,并且没有了SelectedItem.
//请问还有什么办法能让界面同更新
}
public class Item {
public string Name { get; set; }
public ObservableCollection<Item> Items { get; set; }
}
}
...全文
217 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
最好自己写一个 数据管理类,用来管理你的Item类数据,所有的操作都放到这个类里。 在你的 Abb 后代,直接绑定它的 DataContext为你的数据管理类,如: this.DataContext = dataManage; 然后再xaml上直接使用bind 来绑定你的数据集合。注意,你的 ObservableCollection集合也要 FirePropertyChangedEvent一下。
gomoku 2014-06-25
  • 打赏
  • 举报
回复
要实现INotifyPropertyChanged:

public class Item : INotifyPropertyChanged
{
    string name;
    public string Name 
    { 
        get { return name;}
        set { name = value; FirePropertyChangedEvent("Name"); }
    }
    public ObservableCollection<Item> Items { get; set; }



    public event PropertyChangedEventHandler PropertyChanged;
    private void FirePropertyChangedEvent(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧