gpt4 book ai didi

c# - Expression Blend 中数据绑定(bind)的新功能

转载 作者:行者123 更新时间:2023-11-30 20:11:51 25 4
gpt4 key购买 nike

我在 Expression Blend 中有一个 WPF 应用程序。

在应用程序中,我希望在右侧有一个列出单词的列表框。

当用户点击一个单词时,我想在左侧显示一个更大的单词文本、描述和一些其他文本。

我知道要在列表框中列出所有单词,我需要对包含单词、描述和其他文本的数据进行数据绑定(bind)。

我是这个数据绑定(bind)的新手。

有人可以帮助我如何在 Expression Blend 4 中执行此操作吗?

谢谢!

最佳答案

我构建了一个非常基本的 MVVM 示例,它将向您展示一些基本功能。

我首先创建了一个“汽车”对象。这就是我的列表框将包含的内容。

Car.cs

public class Car
{
public Car(string make, string model, int year)
{
Model = model;
Make = make;
Year = year;
}

public string Model { get; set; }
public string Make { get; set; }
public int Year { get; set; }
}

接下来,我创建了一个 ViewModel 以设置为我的 View 的 DataContext。 ViewModel 有两个属性,“Cars”和“SelectedCar”。 View 将绑定(bind)到这两个属性。这是 ViewModel 的实现。

MainWindow_ViewModel.cs

public class MainWindow_ViewModel : INotifyPropertyChanged
{
public MainWindow_ViewModel()
{
this.Cars = LoadInitialCarList();
this.SelectedCar = this.Cars.First();
}

public List<Car> Cars
{
get { return cars; }
set
{
if (cars != value)
{
cars = value;
OnPropertyChanged("Cars");
}
}
}
private List<Car> cars;

public Car SelectedCar
{
get { return selectedCar; }
set
{
if (selectedCar != value)
{
selectedCar = value;
OnPropertyChanged("SelectedCar");
}
}
}
private Car selectedCar;

private List<Car> LoadInitialCarList()
{
List<Car> list = new List<Car>();

list.Add(new Car("Chevrolet", "Camaro", 1968));
list.Add(new Car("Ford", "Mustang", 1965));
list.Add(new Car("Pontiac", "GTO", 1970));

return list;
}

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

#endregion
}

现在,在 View 中,我能够创建一个 ListBox(如您建议的那样)并使用我的汽车列表填充它的 ItemSource。我还将 ListBox 的 SelectedItem 绑定(bind)到 ViewModel 上的 SelectedCar。我在 View 中放置了一些其他文本,以显示有关所选汽车的更多数据。

主窗口.xaml

<Window x:Class="ListBoxBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:local="clr-namespace:ListBoxBinding"
>

<Window.DataContext>
<local:MainWindow_ViewModel/>
</Window.DataContext>

<StackPanel>
<ListBox ItemsSource="{Binding Cars}" SelectedItem="{Binding SelectedCar, Mode=TwoWay}"/>

<StackPanel Orientation="Horizontal">
<TextBlock Margin="3" Text="{Binding SelectedCar.Year}"/>
<TextBlock Margin="3" Text="{Binding SelectedCar.Make}"/>
<TextBlock Margin="3" Text="{Binding SelectedCar.Model}"/>
</StackPanel>
</StackPanel>

当您在 ListBox 中选择一个项目时,它将更新 ViewModel 上的 SelectedItem,因此,它会更新绑定(bind)到 SelectedCar 上的属性的 TextBlock。

我认为这与您要实现的目标类似。希望这对您有所帮助!

关于c# - Expression Blend 中数据绑定(bind)的新功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com