XAML 学习(6)

来源:互联网 发布:网络插座面板怎么接线 编辑:程序博客网 时间:2024/06/06 08:27

XAML文件

<Window x:Class="WindowsApp1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:WindowsApp1"
    Title="WindowsApp1" Height="300" Width="300"
    >
  <Window.Resources>
    <c:Students x:Key="StudentData"/>

    <Style TargetType="{x:Type ListBoxItem}">
      <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Name}" Value="A">
          <Setter Property="Foreground" Value="Red" />
        </DataTrigger>

        <MultiDataTrigger>
          <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding Path=Name}" Value="C" />
            <Condition Binding="{Binding Path=Remark}" Value="0003" />
          </MultiDataTrigger.Conditions>
          <MultiDataTrigger.Setters>
            <Setter Property="Background" Value="Cyan" />
          </MultiDataTrigger.Setters>
        </MultiDataTrigger>
       
      </Style.Triggers>
    </Style>
    <DataTemplate DataType="{x:Type c:Student}">
      <Canvas Width="160" Height="20">
        <TextBlock FontSize="12"
        Width="130" Canvas.Left="0" Text="{Binding Path=Name}" />
        <TextBlock FontSize="12"
          Width="30" Canvas.Left="130" Text="{Binding Path=Remark}"/>
      </Canvas>
    </DataTemplate>
  </Window.Resources>

  <StackPanel>
    <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
      ItemsSource="{StaticResource StudentData}"/>
  </StackPanel>
</Window>

类文件:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace WindowsApp1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>

    public partial class Window1 : System.Windows.Window
    {

        public Window1()
        {
            InitializeComponent();
        }

    }


    public class Student
    {
        private string _name;
        private string _remark;

        public string Name
        {
            set
            {
                _name = value;
            }

            get
            {
                return _name;
            }
        }

        public string Remark
        {
            set
            {
                _remark = value;   
            }
            get
            {
                return _remark;
            }
        }

        public Student(string name, string remark)
        {
            this._name = name;
            this._remark = remark;
        }
    }

    public class Students : ObservableCollection<Student>
    {
        public Students()
        {
            Add(new Student("A","0001"));
            Add(new Student("B","0002"));
            Add(new Student("C","0003"));
            Add(new Student("D","0004"));
        }
    }