gpt4 book ai didi

C# - WPF 在 DataGridColumnHeader 中使用 DataTrigger

转载 作者:行者123 更新时间:2023-12-03 10:38:39 24 4
gpt4 key购买 nike

如何在 DataGridColumHeader 中使用 DataTriggers?使用下面的这段代码,它不起作用。有人知道我该如何解决这个问题吗?

<DataGridTextColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFFFBD21" />
<Style.Triggers>
<DataTrigger Binding="{Binding HasChangedRows}" Value="false">
<Setter Property="Background" Value="#66FFBD21"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.HeaderStyle>

最佳答案

在新的解决方案中检查此代码,如果 HasChangedRows 绑定(bind)设置正确,您将看到它应该可以工作。您可以使用复选框来更改 HasChangedRows 的值

<Window x:Class="WpfApplication10.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" Loaded="Window_Loaded">
<StackPanel>
<CheckBox IsThreeState="False" IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=HasChanges, Mode=TwoWay}"
Content="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsChecked}"/>

<DataGrid Name="MainGrid" AutoGenerateColumns="False">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}" x:Key="customheaderstyle">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=HasChanges}" Value="false">
<Setter Property="Background" Value="#66FFBD21"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=HasChanges}" Value="true">
<Setter Property="Background" Value="#FFFFBD21" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn HeaderStyle="{StaticResource customheaderstyle}" Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Window>

和后面的代码:
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 WpfApplication10
{
public partial class MainWindow : Window, INotifyPropertyChanged
{

#region INotifyPropertyChanged

public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChange(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

#endregion


private bool _HasChanges = false;
public bool HasChanges
{
get { return this._HasChanges; }
set
{
this._HasChanges = value;
NotifyPropertyChange("HasChanges");

}
}

public MainWindow()
{
InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
String[] list = { "1", "2", "3", "4" };
this.MainGrid.ItemsSource = list;
}
}
}

最后结果:

enter image description here



enter image description here

关于C# - WPF 在 DataGridColumnHeader 中使用 DataTrigger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14395781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com