wpf listbox viewmodel 例子
摘要:
1.WPF ListBox 简介
2.ViewModel 概念及作用
3.WPF ListBox 与 ViewModel 的结合
4.例子详解
正文:
一、WPF ListBox 简介
WPF(Windows Presentation Foundation)是微软提供的一款用于创建 Windows 桌面应用程序的技术。在 WPF 中,ListBox 是一种常用的控件,它可以用于显示一系列的项目,并支持选择和排序等功能。ListBox 通常与数据绑定技术一起使用,以便将数据呈现在界面上。
二、ViewModel 概念及作用
ViewModel 是一种设计模式,它主要用于将 UI(用户界面)与数据分离,使应用程序的逻辑更加清晰。ViewModel 包含应用程序的数据和业务逻辑,可以看作是模型(Model)与视图(View)的中间人。ViewModel 可以独立于视图进行修改和更新,从而实现界面与数据之间的解耦。
三、WPF ListBox 与 ViewModel 的结合
在 WPF 应用程序中,ListBox 通常与 ViewModel 结合使用,以便将数据呈现在界面上。为了实现这一目标,需要进行以下步骤:
1.创建一个 ViewModel 类,包含 ListBox 需要显示的数据和相关的业务逻辑。
2.创建一个 DataTemplate,用于定义 ListBox 的项(Item)的样式和布局。
3.在 ListBox 的 ItemTemplate 属性中绑定 ViewModel 类的属性,以便将数据呈现在界面上。
4.实现 INotifyPropertyChanged 接口,以便在 ViewModel 中的数据发生变化时通知 UI 进行数据更新。
四、例子详解
下面是一个简单的 WPF ListBox 与 ViewModel 结合的例子:
1.创建一个 ViewModel 类,例如 `PersonViewModel`:
```csharp
public class PersonViewModel : INotifyPropertyChanged
{
private string _name;
private int _age;
public string Name
{
get { return _name; }
set
{
if (_name!= value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
public int Age
{
get { return _age; }
set
{
if (_age!= value)
{
_age = value;
RaisePropertyChanged("Age");
}
}
}
public ICommand SelectCommand => new RelayCommand(Select);
private void Select()
{
MessageBox.Show("选定了:" + Name + ", " + Age);
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
2.创建一个 DataTemplate,用于定义 ListBox 的项的样式和布局:
```xml
fontweight属性bold<DataTemplate x:Key="PersonTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" FontSize="18" FontWeight="Bold"/>
<TextBlock Text="{Binding Age}"/>
<Button Content="选定" Command="{Binding SelectCommand}" Margin="10,0,0,0"/>
</StackPanel>
</DataTemplate>
```
3.在 ListBox 的 ItemTemplate 属性中绑定 ViewModel 类的属性,以便将数据呈现在界面上:
```xml
<ListBox x:Name="PersonListBox" Margin="10" ItemsSource="{Binding Persons, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<PersonTemplate/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
```
4.在 ViewModel 中实现 INotifyPropertyChanged 接口,以便在数据发生变化时通知 UI 进行数据更新。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论