WPF中使用“全局变量”的简单方法

说白了,“全局变量”就是一个静态属性,使得所有类可以直接访问,可以存储一些全局的数据。比如有些配置,由于和逻辑无关,放入ViewModel有时并不合适,于是便希望可以直接由XAML来绑定。这样一个属性可以在任何类中实现,也可以定义在App类中:

public partial class App : Application
{
    public LocalInfo LocalInfo { get; set; }

    public App()
    {
        this.Startup += new StartupEventHandler(App_Startup);
    }

    void App_Startup(object sender, StartupEventArgs e)
    {
        LocalInfo = new LocalInfo()
        {
            LocalName = "AAA"
        };
    }
}

那么关键是在XAML中如何引用这个属性,在WPF中,使用x:Static即可:

<TextBox Text="{Binding Source={x:Static local:App.Current}, 
    Path=LocalInfo.LocalName}" />

当然要先声明local命名空间:

xmlns:local="clr-namespace:Gildor.Try.WPF"

如此便直接通过XAML使用LocalInfo这个“全局变量”。然而在Silverlight中由于不支持x:Static,便无法这么容易了。

不过这个方法如果滥用,估计会严重影响代码质量,慎用吧。

转载于:https://www.cnblogs.com/Gildor/archive/2010/06/29/1767156.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF MVVM,要绑定全局变量,可以通过以下几个步骤实现。 首先,在ViewModel层,创建一个公共静态变量,这个变量就是我们的全局变量。例如,我们创建一个名为GlobalData的类,并在其定义一个名为Name的全局变量。 ```C# public class GlobalData { public static string Name { get; set; } } ``` 接下来,在需要使用全局变量的ViewModel,可以直接通过GlobalData.Name来访问和修改全局变量的值。例如,我们创建一个名为MainViewModel的类,并在其使用全局变量Name。 ```C# public class MainViewModel : INotifyPropertyChanged { private string _name; public string Name { get { return _name; } set { if (_name != value) { _name = value; GlobalData.Name = _name; // 修改全局变量的值 OnPropertyChanged(nameof(Name)); } } } // 其他ViewModel代码... #region INotifyPropertyChanged implementation public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion } ``` 最后,在需要使用全局变量的View,可以通过绑定ViewModel的Name属性,来实现对全局变量的访问。 ```XAML <Label Content="{Binding Name}" /> ``` 通过以上步骤,我们就成功地实现了WPF MVVM全局变量的绑定。无论在任何ViewModel修改全局变量的值,都可以在View动态显示变化的结果。在这个例子,我们创建了一个GlobalData类作为全局变量的容器,利用ViewModel与View之间的数据绑定机制,实现了全局变量在整个应用程序共享和更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值