急问一个WPF如何绑定到全局结构变量(非全局数组变量)的问题

charm 2010-06-22 07:18:41
问题描述:
(1)有一个类(实际是结构) 如LocalInfo(从INotifyPropertyChanged派生),里面有几个变量,同时有相应的set,get
(2) 在程序开始的时候new一个全局的LocalInfo对象(里面赋了初值)
(3)在一个窗体中如下声明:
<Window.Resources>
<CollectionViewSource
Source="{Binding Source={x:Static Application.Current}, Path=LocalInfo}"
x:Key="LocalInfoView" />
</Window.Resources>
(4)在窗体的一个子控件中如下绑定(XAML):
<TextBox Grid.Column="1" Grid.ColumnSpan="2" Height="23" HorizontalAlignment="Center" Margin="22,1,29,1" Name="textBoxLocalName" VerticalAlignment="Center" Width="118" Text="{Binding Path=LocalName}"/>

这里的LocalName是LocalInfo的一个变量的set,get方法

折腾了一下午也没有在textBox中将 内容显示出来(而我用在窗口的xaml中定义一个变量时可以的:如在xaml中的定义资源:<my:LocalInfo x:Key="LocalInfoView" >

我现在怀疑是不是不能用CollectionViewSource 声明绑定源,因为我这里不是集合,就一个单独的结构。

问题的总体描述是:
我的程序有一个配置信息,需要在一个界面中配置这些信息。


不知道说清楚了没,有人知道吗?非常感谢


...全文
1463 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
四维空间151 2012-09-17
  • 打赏
  • 举报
回复
我只想在前台xaml中绑定变量,我操,怎么就搞不起来呢
namhyuk 2010-06-23
  • 打赏
  • 举报
回复
参考一下vs2010自动生成的代码:

<Window.Resources>
<my:NorthwindDataSet x:Key="northwindDataSet" />
<CollectionViewSource x:Key="productsViewSource" Source="{Binding Path=Products, Source={StaticResource northwindDataSet}}" />
</Window.Resources>
...
<Grid DataContext="{StaticResource productsViewSource}">

我怀疑是不是在包含TextBox的控件上没有指定DataContext.
leon0905 2010-06-23
  • 打赏
  • 举报
回复
不明白你为什么要用CollectionViewSource,如果非要绑定静态类不可得话,可以用{x:Static YourNamespace:YourType.YourProperty}作为绑定源,个人认为最好不要用静态类作为绑定源,可以使用单例,达到一样的效果,将对象绑定到UI就简单了
charm 2010-06-23
  • 打赏
  • 举报
回复
真是很难啊
charm 2010-06-23
  • 打赏
  • 举报
回复
to:leon0905
我跟你的说法本质是一样的
<CollectionViewSource
Source="{Binding Source={x:Static Application.Current}, Path=LocalInfo}"
x:Key="LocalInfoView" />

只不过包了一层啊,你的那种方式可以在控件里面直接用,我是声明在资源标记里面了,所以要封一下
charm 2010-06-23
  • 打赏
  • 举报
回复
to:leon0905
我知道你的意思,但是我不是某个类里面有个静态类型的属性的绑定
不过很感谢你,让我知道怎么绑定静态类型属性的方式

不过从道理上来讲,静态变量(对象)也是全局的,是不是也可以参照参照,按照你的说法我怎么改呢?
leon0905 2010-06-23
  • 打赏
  • 举报
回复
{x:Static YourNamespace:YourType.YourProperty}不是重新生成一个对象,可通过这种方式直接绑定静态类的属性
charm 2010-06-23
  • 打赏
  • 举报
回复
to:namhyuk
<Window.Resources>
<my:NorthwindDataSet x:Key="northwindDataSet" />
<CollectionViewSource x:Key="productsViewSource" Source="{Binding Path=Products, Source={StaticResource northwindDataSet}}" />
</Window.Resources>
...
<Grid DataContext="{StaticResource productsViewSource}">

你这代码我是这么理解的:生成一个名为northwindDataSet 类型为NorthwindDataSet的对象实例
后面那个CollectionViewSource 是对该实例包装一下(视图实例),然后再绑定到目标

我怀疑你说说的:my:NorthwindDataSet 是一个集合对象
我这个不是从集合对象派生的
charm 2010-06-23
  • 打赏
  • 举报
回复
补充:
1,全局变量是非collection对象,我是在App初始化话时从磁盘读出来的
2.leon0905 你这种方式{x:Static YourNamespace:YourType.YourProperty} 不就是又生成了一个对象吗?我要的是app中读出来或者已经初始化好的数据源
3 to:namhyuk 你的xaml实际是leon的是一个意思。另外,数据源已经设置好了的,我通过象leon所说的那样重新生生成一个对象,是可以绑定到内容的。

问题归结点是:如何绑定到全局的非集合且已初始化自定义对象
内容概要:本文系统研究了在电力系统负荷发生突变的动态环境下,采用无迹卡尔曼滤波(UKF)与自适应无迹卡尔曼滤波(AUKF)进行三相状态估计的方法。通过Matlab平台实现了两种滤波算法的仿真模型,构建了包含三相电力系统建模、线性状态方程推导、量测系统设计在内的完整状态估计框架。重点对比分析了UKF与AUKF在突变负荷扰动下的估计精度、收敛速度与鲁棒性,深入探讨AUKF通过实时调整噪声协方差实现自适应的能力,从而有效应对系统模型不确定性和外部动态变化,提升状态估计的可靠性。研究为智能电网在复杂动态工况下的实时监控、安全评估与优化控制提供了坚实的算法基础与仿真验证手段。; 适合人群:具备电力系统分析、现代控制理论基础及一定Matlab编程能力的研究生、科研人员和工程技术人员。; 使用场景及目标:① 掌握UKF在线性电力系统状态估计中的具体应用流程与实现细节;② 深入理解AUKF的自适应机制及其在负荷突变、模型失配等动态工况下提升估计性能的原理与优势;③ 为智能电网的状态监测、故障诊断、实时调度与主动防御等高级应用提供可靠的算法支持与可复现的仿真平台。; 阅读建议:建议读者结合电力系统状态估计的经典理论,仔细研读并运行所提供的Matlab代码,重点关注系统模型的建立、UKF/AUKF算法的参数初始化、负荷突变事件的建模方式,以及两种算法在电压、电流等状态变量估计误差上的对比分析,通过仿真结果的可视化深入理解算法差异与工程应用价值。

111,129

社区成员

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

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

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