WPF BInding 列表框的选定项 属性
WPF BInding selected Item Property of list box
我有以下场景
我有计算机列表
列出计算机;
并且计算机具有以下属性
Computer{
User current-user;
String name;
}
User{
Date-time Start Time;
Date Time Elapsed;
....}
我想要下面的视图
列表视图中的计算机名称列表
,当当前用户的详细信息在该计算机中![在此处输入图像说明] [1]
我需要一些提示,我如何在 XAML c 计算机和用户对象实现 Inotifypropertychanged 接口和我的集合是 Observable 集合
这是一个客户端服务器应用程序,因此我假设在上述条件下 UI 将使用来自客户端计算机的当前用户信息进行更新。谢谢!
您可以通过以下方式完成此操作:
1- 将您的计算机列表绑定到列表框
<ListBox Name="ComputersListbox" ItemsSource={Binding YourPropertyListHere}>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text={Binding name}>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
将列表框的选定项绑定到网格布局的数据上下文:
<Grid Name="UserDetailGrid" DataContext={Binding SelectedItem.current-user,ElementName=ComputersListbox}><!--All the controls in the grid will consider their datasource is the SelectedItem.current-user in the listbox which is a computer-->
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text={Binding Elapsed} />
<TextBlock Grid.Column="1" Text={Binding StartTime} />
</Grid>
每当您更改所选项目时,网格中的数据都会被修改。由于您实现了 INotifyPropertyChanged,当您更改视图模型中的属性时,视图将被更新。
我有以下场景 我有计算机列表 列出计算机;
并且计算机具有以下属性
Computer{
User current-user;
String name;
}
User{
Date-time Start Time;
Date Time Elapsed;
....}
我想要下面的视图
列表视图中的计算机名称列表
,当当前用户的详细信息在该计算机中![在此处输入图像说明] [1]
我需要一些提示,我如何在 XAML c 计算机和用户对象实现 Inotifypropertychanged 接口和我的集合是 Observable 集合
这是一个客户端服务器应用程序,因此我假设在上述条件下 UI 将使用来自客户端计算机的当前用户信息进行更新。谢谢!
您可以通过以下方式完成此操作:
1- 将您的计算机列表绑定到列表框
<ListBox Name="ComputersListbox" ItemsSource={Binding YourPropertyListHere}>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text={Binding name}>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
将列表框的选定项绑定到网格布局的数据上下文:
<Grid Name="UserDetailGrid" DataContext={Binding SelectedItem.current-user,ElementName=ComputersListbox}><!--All the controls in the grid will consider their datasource is the SelectedItem.current-user in the listbox which is a computer-->
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text={Binding Elapsed} />
<TextBlock Grid.Column="1" Text={Binding StartTime} />
</Grid>
每当您更改所选项目时,网格中的数据都会被修改。由于您实现了 INotifyPropertyChanged,当您更改视图模型中的属性时,视图将被更新。