wpf中,根据数据的值的不同,UI的界面随之改变(显示控件、隐藏控件以及改变控件的其它属性),
这时我们可以用DataTrigger数据触发器。
下面两个案例实现同样的功能,当条件(数据的值)不同时,显示不同的按钮。
创建 Core类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; namespace DataTriggerDemo2 { public class Core : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } private string condition; public string Condition { get { return condition; } set { condition = value; OnPropertyChanged("Condition"); } } } }
XAML:
<Window x:Class="DataTriggerDemo2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:DataTriggerDemo2" Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> <Window.Resources> <local:Core x:Key="core" /> <Style TargetType="{x:Type Button}"> <Setter Property="Margin" Value="5" /> <Setter Property="Padding" Value="0,8.5" /> <Setter Property="FontSize" Value="16" /> </Style> </Window.Resources> <Grid> <ContentControl> <ContentControl.ContentTemplate> <DataTemplate> <DockPanel LastChildFill="True" DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, Path=DataContext}"> <TextBlock DockPanel.Dock="Top" Text="按钮列表" HorizontalAlignment="Center" FontSize="18"/> <Border DockPanel.Dock="Right" Width="160"> <StackPanel Orientation="Vertical">