سؤال

i m facing one problem in my application that in datagridrow's IsMouseOver= true property changes background color but i m not able to change foreground.. To check property i have used trigger.. can anyone help me to solve it..

هل كانت مفيدة؟

المحلول

To change DataGridRow Foreground color when mouse is over, you have to use style trigger. This is an example of how to do it. In this example I set the Foreground color to white to make it more visible.

XAML:

<Window x:Class="PocWpf.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">
    <Grid>
        <Grid.Resources>
            <Style TargetType="{x:Type DataGridRow}" x:Key="GreenForegroundStyle">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Foreground" Value="White" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Grid.Resources>
        <DataGrid x:Name="dgTest" AutoGenerateColumns="True" RowStyle="{StaticResource GreenForegroundStyle}">

        </DataGrid>
    </Grid>
</Window>

Code behind:

namespace PocWpf
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            var list = new List<string>();

            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");
            list.Add("A");

            this.dgTest.ItemsSource = list;
        }
    }
}

This is the result:
enter image description here

نصائح أخرى

<Style TargetType="DataGridRow"> 
    <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
             <Setter Property="Foreground" Value="Green" />
        </Trigger> 
    </Style.Triggers>
</Style> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top