zoukankan      html  css  js  c++  java
  • WPF---数据绑定之ItemsControl(三)

    一、Combox绑定

    场景:定义多个Person,Person有Name和Age属性,将多个Person与Combox进行绑定,Combox中只显示Name信息,点击任意一个item,在左侧显示该条目的详细信息。

    参考代码以下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    
    namespace BindingDemo2
    {
        public partial class MainWindow : Window
        {
            private List<Person> personList = new List<Person>();
            public MainWindow()
            {
                InitializeComponent();
                personList.Add(new Person() {Name = "Mary",Age = 18 });
                personList.Add(new Person() { Name = "Tom", Age = 15 });
                personList.Add(new Person() { Name = "Jack", Age = 28 });
                personList.Add(new Person() { Name = "Jim", Age = 38 });
                cmbPerson.ItemsSource = personList;
            }
        }
        public class Person : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
            protected void OnPropertyChanged(string propertyName)
            {
                PropertyChangedEventHandler handler = PropertyChanged;
    
                if (handler != null)
                {
                    handler(this, new PropertyChangedEventArgs(propertyName));
                }
            }
            private int _age = 18;
    
            public int Age
            {
                get { return _age; }
                set
                {
                    _age = value;
                    OnPropertyChanged("Age");
                }
            }
    
            private string _name = "Mary";
    
            public string Name
            {
                get { return _name; }
                set
                {
                    _name = value;
                    OnPropertyChanged("Name");
                }
            }
            public Person()
            {
                Age = 18;
                Name = "Mary";
            }
    
        }
    }
    <Window x:Class="BindingDemo2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:BindingDemo2"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525" Name="win">
        <Grid ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <StackPanel>
                <Label Content="Target"/>
                <Label Content="Name"/>
                <Label Content="{Binding SelectedItem.Name,ElementName=cmbPerson}" Height="30" Background="AliceBlue" Name="lbName"/>
                <Label Content="Age"/>
                <Label  Height="30" Background="AliceBlue" Name="lbAge" Content="{Binding SelectedItem.Age, ElementName=cmbPerson}"/>
            </StackPanel>
            <StackPanel Grid.Column="1">
                <ComboBox Name="cmbPerson" ItemsSource="{Binding}" DisplayMemberPath="Name" SelectedIndex="0">
                </ComboBox>
            </StackPanel>
        </Grid>
    </Window>

    运行结果如下:

    我们也可以利用DataContext属性来简化前台绑定,参考代码以下:

    <Window x:Class="BindingDemo2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:BindingDemo2"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525" Name="win">
        <Grid ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <StackPanel DataContext="{Binding ElementName=cmbPerson, Path=SelectedItem}">
                <Label Content="Target"/>
                <Label Content="Name"/>
                <Label Content="{Binding Name}" Height="30" Background="AliceBlue" Name="lbName"/>
                <Label Content="Age"/>
                <Label  Height="30" Background="AliceBlue" Name="lbAge" Content="{Binding Age}"/>
            </StackPanel>
            <StackPanel Grid.Column="1">
                <ComboBox Name="cmbPerson" ItemsSource="{Binding}" DisplayMemberPath="Name" SelectedIndex="0">
                </ComboBox>
            </StackPanel>
        </Grid>
    </Window>
  • 相关阅读:
    微服务架构常见解决方案
    摆脱他人的期望,成为真正的自己
    Git忽略提交规则
    JPA多数源的一种方式
    jquery设置的cookie过期时间关闭浏览器就失效
    使用jQuery操作Cookies的实现代码(转)
    Linux下查看文件和文件夹大小
    nginx下默认403 80端口
    linux下 nginx服务脚本
    一串代码在linux上安装nginx
  • 原文地址:https://www.cnblogs.com/3xiaolonglong/p/9723926.html
Copyright © 2011-2022 走看看