• 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>
  • 相关阅读:
    ov5640调试过程
    关于OnPaint函数的工作原理(很详细,很实用) [转载]
    机器视觉网络资源
    (转)signaltap II数据用于仿真
    DataSocket简介
    datasocket使用网络传输图像
    共享变量/全局变量/datasocket
    [转载] 任意频率分频原理
    [转]影响FPGA设计中时钟因素的探讨
    生产者和消费者
  • 原文地址:https://www.cnblogs.com/3xiaolonglong/p/9723926.html
Copyright © 2020-2023  润新知