wpf 使用单例传值简单DEMO
时间: 2024-09-26 11:13:36 浏览: 51
在WPF(Windows Presentation Foundation)中,单例模式常用于需要在整个应用程序中共享数据的情况,比如设置管理、数据库连接等。下面是一个简单的单例类,并通过它传递值给窗口的DEMO:
首先,我们创建一个名为SingletonClass的单例类,它有一个静态属性来保存我们的值:
```csharp
public sealed class SingletonClass : INotifyPropertyChanged // 为了支持依赖于值的变化通知
{
private static readonly Lazy<SingletonClass> lazy = new Lazy<SingletonClass>(() => new SingletonClass());
public static SingletonClass Instance { get { return lazy.Value; } }
private object sharedValue;
public object SharedValue
{
get { return sharedValue; }
set
{
if (sharedValue != value)
{
sharedValue = value;
OnPropertyChanged("SharedValue");
}
}
}
// INotifyPropertyChanged事件处理
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
// 构造函数为私有,防止实例化
private SingletonClass() { }
}
```
然后,在需要接收这个值的窗口或视图模型中,我们可以这样获取并使用:
```csharp
// 视图模型或者窗体类
public partial class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel()
{
SharedValueFromSingleton = SingletonClass.Instance.SharedValue; // 获取单例的共享值
}
public object SharedValueFromSingleton { get; private set; }
// ...其他业务逻辑...
}
// XAML文件中绑定
<TextBox Text="{Binding SharedValueFromSingleton}" />
```
在这个例子中,`SingletonClass`是单例,任何时候调用`Instance`都会返回同一个实例,而`SharedValue`则作为公共属性供外部访问。
阅读全文