WPF BInding选择列表框的项属性

时间:2015-01-26 09:59:54

标签: c# wpf data-binding

我有以下情况 我有电脑列表 列出计算机;

和计算机具有以下属性

Computer{
  User current-user;
  String name;

}

User{
   Date-time Start Time;
   Date Time Elapsed;
  ....}

我想拥有以下视图

列表视图中的计算机名称列表

选择当前用户的详细信息在该计算机中![在此处输入图像说明] [1]

我需要一些提示我如何在 XAML c omputer上执行此操作,用户对象实现Inotifypropertychanged 界面,我的集合是 Observable collection < / p>

这是一个客户端服务器应用程序,所以我假设在上述条件下,UI将使用来自客户端计算机的当前用户信息进行更新。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式执行此操作:

1-将计算机列表绑定到列表框

<ListBox Name="ComputersListbox" ItemsSource={Binding YourPropertyListHere}>
    <ListBox.ItemTemplate>
         <DataTemplate>
             <StackPanel>
                 <TextBlock Text={Binding name}>
             </StackPanel>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

将列表框的选定项目绑定到网格布局的datacontext:

<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,因此在更改viewmodel中的属性时将更新视图。