数据触发器
当Label1内容为10的时候,Label颜色变为红色。
XAML代码
<Window x:Class="WPFDataTrigger.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style x:Key="ColorText" TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Data}" Value="10">
<Setter Property="Foreground" Value="Red"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Button Name="button1"
Height="23" HorizontalAlignment="Left" Margin="167,160,0,0" VerticalAlignment="Top" Width="75"
Click="button1_Click">
</Button>
<Label Name="label1"
Height="28" HorizontalAlignment="Left" Margin="167,106,0,0" VerticalAlignment="Top" Width="75"
Content="{Binding Path=Data,Mode=TwoWay}"
Style="{StaticResource ColorText}"
>
</Label>
</Grid>
</Window>
C#代码
using System;
using System.Collections.Generic;
using System.Linq;
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.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace WPFDataTrigger
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
int i = 0;
MyData myData = new MyData();
public MainWindow()
{
InitializeComponent();
this.DataContext = myData;
myData.Data = i.ToString();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
i = (++i)%100;
myData.Data = i.ToString();
}
}
class MyData:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private String m_data = null;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public String Data
{
get
{
return m_data;
}
set
{
m_data = value;
OnPropertyChanged("Data");
}
}
}
}
搜索
复制