• Silverlight DataGrid行背景分组着色


     利用Silverlight DataGrid LoadingRow事件传入参数DataGridRowEventArgs

    我们可以获取到Row对象She之其背景。

    下面是一个简单示例

    C#

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;

    namespace SilverlightApplication1
    {
        
    public partial class MainPage : UserControl
        {
            
    public MainPage()
            {
                InitializeComponent();
            }

            List
    <SourceModel> gridSources = new List<SourceModel>();

            
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
            }

            
    private void LoadSource(int n)
            {
                
    if (n < 1)
                    
    throw new Exception("should >=1");
                gridSources.Clear();
                
    for (int i = 0; i < n; i++)
                {
                    gridSources.Add(
    new SourceModel() { ID = i.ToString(), Name = "test" + i, Group = ((int)(new Random().NextDouble() * i)).ToString() });
                }

                
    int j = 0;
                gridSources 
    = gridSources.OrderBy(t => t.Group).ToList();
                gridSources.GroupBy(t 
    => t.Group).ToList().ForEach(t =>
                {
                    t.ToList().ForEach(k 
    => k.BG = brushs[j % brushs.Length]);
                    j
    ++;
                });
            }
            Brush[] brushs 
    = new Brush[] { new SolidColorBrush(Color.FromArgb(128135206235)), new SolidColorBrush(Color.FromArgb(255240255240)), new SolidColorBrush(Color.FromArgb(140255970)) };
            
    private void test1_Click(object sender, RoutedEventArgs e)
            {
                dgSource.ItemsSource 
    = gridSources;
            }

            private void test2_Click(object sender, RoutedEventArgs e)
            {

            }

            
    private void LoadSource_Click(object sender, RoutedEventArgs e)
            {
                LoadSource(
    int.Parse(this.maxCount.Text));
            }

            
    private void dgSource_LoadingRow(object sender, DataGridRowEventArgs e)
            {
                e.Row.Background 
    = (e.Row.DataContext as SourceModel).BG;
            }
        }

        
    public class SourceModel
        {
            
    public string ID { getset; }
            
    public string Name { getset; }
            
    public string Group { getset; }
            
    public Brush BG { getset; }
        }

    }

    XAMl:

    <UserControl x:Class="SilverlightApplication1.MainPage"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc
    ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable
    ="d"
                 xmlns:data
    ="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
        d:DesignHeight
    ="300" d:DesignWidth="400"
                 xmlns:i
    ="http://schemas.microsoft.com/expression/2010/interactivity"
         xmlns:sdk
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"   
                 xmlns:Test
    ="clr-namespace:SilverlightApplication1;assembly=SilverlightApplication1">
        
    <Grid x:Name="LayoutRoot">
            
    <Grid.RowDefinitions>
                
    <RowDefinition ></RowDefinition>
                
    <RowDefinition Height="26" ></RowDefinition>
            
    </Grid.RowDefinitions>
            
    <data:DataGrid Grid.Row="0" x:Name="dgSource" Margin="3,3,3,3" RowBackground="Black" AutoGenerateColumns="False" LoadingRow="dgSource_LoadingRow" >
                
    <data:DataGrid.Columns>
                    
    <data:DataGridTextColumn Header="ID" Binding="{Binding ID}" IsReadOnly="True" />
                    
    <data:DataGridTextColumn Header="Name" Binding="{Binding Name,Mode=TwoWay}" />
                    
    <data:DataGridTextColumn Header="Group" Binding="{Binding Group,Mode=TwoWay}" />
                    
                    
    <data:DataGridTextColumn Header="ID" Binding="{Binding ID}" IsReadOnly="True" />
                    
    <data:DataGridTextColumn Header="Name" Binding="{Binding Name,Mode=TwoWay}" />
                    
    <data:DataGridTextColumn Header="Group" Binding="{Binding Group,Mode=TwoWay}" />
                    
                    
    <data:DataGridTextColumn Header="ID" Binding="{Binding ID}" IsReadOnly="True" />
                    
    <data:DataGridTextColumn Header="Name" Binding="{Binding Name,Mode=TwoWay}" />
                    
    <data:DataGridTextColumn Header="Group" Binding="{Binding Group,Mode=TwoWay}" />
                
    </data:DataGrid.Columns>            
            
    </data:DataGrid>
            
    <StackPanel Orientation="Horizontal" Grid.Row="1">
                
    <TextBox x:Name="maxCount" Width="300" Text="100000"></TextBox>
                
    <Button x:Name="loadSource1" Click="LoadSource_Click" Content="Load Source" />
                
    <Button x:Name="test1" Click="test1_Click" Content="Test bind" />
                
    <Button  x:Name="test2"  Click="test2_Click" Content="Test 2"/>
            
    </StackPanel>
        
    </Grid>
    </UserControl>

     


    作者:破  狼
    出处:http://www.cnblogs.com/whitewolf/
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼

  • 相关阅读:
    CodeForces
    HDU
    HDU
    POJ
    URAL
    POJ
    UVa
    UVa
    UVa
    UVa
  • 原文地址:https://www.cnblogs.com/whitewolf/p/2119608.html
Copyright © 2020-2023  润新知