wpf observableobject
时间: 2025-01-03 10:35:10 浏览: 65
### WPF 中 ObservableObject 的使用方法
ObservableObject 是用于实现 INotifyPropertyChanged 接口的基础类,这使得属性更改通知变得简单而高效。通过继承 ObservableObject 类,可以轻松创建响应式的视图模型 (ViewModel),从而确保 UI 能够及时更新以反映数据的变化。
#### 创建自定义 View Model
为了展示如何利用 ObservableObject 实现一个简单的登录状态管理器,下面是一个具体的例子:
```csharp
using CommunityToolkit.Mvvm.ComponentModel;
using System;
public class LoginStatusViewModel : ObservableObject
{
private string _username;
/// <summary>
/// 用户名属性
/// </summary>
public string Username
{
get => _username;
set => SetProperty(ref _username, value);
}
private bool _isLoggedIn;
/// <summary>
/// 登录状态属性
/// </summary>
public bool IsLoggedIn
{
get => _isLoggedIn;
set => SetProperty(ref _isLoggedIn, value);
}
}
```
在这个例子中,`LoginStatusViewModel` 继承了 `ObservableObject` 并实现了两个可绑定的属性:`Username` 和 `IsLoggedIn`。每当这些属性发生变化时,都会触发 PropertyChanged 事件来通知任何订阅者(通常是 XAML 页面上的控件),以便它们能够自动刷新显示的内容[^1]。
#### 将 ViewModel 关联到 View
为了让上述 ViewModel 生效,在 XAML 文件里设置 DataContext 即可完成关联操作:
```xml
<Window x:Class="YourNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="MainWindow">
<!-- 设置窗口的数据上下文 -->
<Window.DataContext>
<local:LoginStatusViewModel />
</Window.DataContext>
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="{Binding Path=Username}" FontSize="24"/>
<Button Content="Toggle Logged In Status" Click="OnToggleLoggedInClicked"/>
</StackPanel>
</Window>
```
在此配置下,当点击按钮调用 OnToggleLoggedInClicked 方法改变 IsLoggedIn 属性值的时候,UI 上对应的文本框也会随之更新其内容。
阅读全文
相关推荐


















