| <Window x:Class="ThemeIssue.Window1" |
| xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
| xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
| xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView" |
| xmlns:GridView="clr-namespace:Telerik.Windows.Controls.GridView;assembly=Telerik.Windows.Controls.GridView" |
| Title="Dynamic Resource Troubles"> |
| <Grid> |
| <Grid.RowDefinitions> |
| <RowDefinition Height="50" /> |
| <RowDefinition /> |
| </Grid.RowDefinitions> |
| <StackPanel Grid.Row="0" Margin="5" |
| Orientation="Horizontal" |
| Background="{DynamicResource ColorOne}" |
| HorizontalAlignment="Center"> |
| <TextBlock Name="TextBlock1" |
| Margin="5" |
| VerticalAlignment="Center" |
| Background="{DynamicResource ColorTwo}" |
| Foreground="{DynamicResource ColorOne}" /> |
| <Button Content="Light" Click="butLight_Click" Margin="5"/> |
| <Button Content="Dark" Click="butDark_Click" Margin="5"/> |
| </StackPanel> |
| <telerik:RadGridView Name="RadGridView1" DataLoadMode="Asynchronous" Grid.Row="1" ColumnsWidthMode="Auto" |
| IsReadOnly="True" AutoGenerateColumns="False"> |
| <telerik:RadGridView.Columns> |
| <telerik:GridViewDataColumn |
| HeaderText="ID" |
| Background="{DynamicResource ColorTwo}" |
| DataMemberPath="ID" /> |
| <telerik:GridViewDataColumn |
| Width="*" |
| HeaderText="Name" |
| Background="{DynamicResource ColorOne}" |
| DataMemberPath="Name" /> |
| <telerik:GridViewDataColumn |
| DataFormatString="{}{0:c2}" |
| HeaderText="UnitPrice" |
| Background="{DynamicResource ColorThree}" |
| DataMemberPath="UnitPrice" /> |
| <telerik:GridViewDataColumn |
| DataFormatString="{}{0:d}" |
| HeaderText="Date" |
| Background="{DynamicResource ColorFour}" |
| DataMemberPath="Date" /> |
| <telerik:GridViewDataColumn HeaderText="Discontinued" DataMemberPath="Discontinued"> |
| <telerik:GridViewDataColumn.CellStyle> |
| <Style TargetType="GridView:GridViewCell"> |
| <Setter Property="Template"> |
| <Setter.Value> |
| <ControlTemplate TargetType="GridView:GridViewCell"> |
| <Border BorderThickness="{TemplateBinding BorderThickness}" |
| BorderBrush="{TemplateBinding BorderBrush}" |
| Background="{TemplateBinding Background}"> |
| <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" |
| IsChecked="{Binding Discontinued}" IsEnabled="False" /> |
| </Border> |
| </ControlTemplate> |
| </Setter.Value> |
| </Setter> |
| </Style> |
| </telerik:GridViewDataColumn.CellStyle> |
| </telerik:GridViewDataColumn> |
| </telerik:RadGridView.Columns> |
| </telerik:RadGridView> |
| </Grid> |
| </Window> |
| using System; |
| using System.Collections.Generic; |
| using System.ComponentModel; |
| using System.Linq; |
| using System.Windows; |
| using System.Windows.Media; |
| namespace ThemeIssue |
| { |
| /// <summary> |
| /// Interaction logic for Window1.xaml |
| /// </summary> |
| public partial class Window1 |
| { |
| private DateTime start; |
| private ResourceDictionary lightColors = new ResourceDictionary(); |
| private ResourceDictionary darkColors = new ResourceDictionary(); |
| public Window1() |
| { |
| CreateResourceDictionaries(); |
| Resources.MergedDictionaries.Add(lightColors); |
| InitializeComponent(); |
| start = DateTime.Now; |
| Loaded += Example_Loaded; |
| RadGridView1.DataLoaded += RadGridView1_DataLoaded; |
| RadGridView1.SortDescriptions.PropertyChanged += ResetTime; |
| RadGridView1.GroupDescriptions.PropertyChanged += ResetTime; |
| } |
| private void CreateResourceDictionaries() |
| { |
| var light = new SolidColorBrush(Colors.Yellow); |
| var dark = new SolidColorBrush(Colors.Green); |
| var lightAlpha = new SolidColorBrush(ModifyAlpha(light, 50)); |
| var darkAlpha = new SolidColorBrush(ModifyAlpha(dark, 50)); |
| lightColors.Add("ColorOne", dark); |
| lightColors.Add("ColorTwo", light); |
| lightColors.Add("ColorThree", darkAlpha); |
| lightColors.Add("ColorFour", lightAlpha); |
| darkColors.Add("ColorOne", light); |
| darkColors.Add("ColorTwo", dark); |
| darkColors.Add("ColorThree", lightAlpha); |
| darkColors.Add("ColorFour", darkAlpha); |
| } |
| private Color ModifyAlpha(SolidColorBrush light, byte alpha) |
| { |
| Color lightlightModified = light.Color; |
| lightModified.A = alpha; |
| return lightModified; |
| } |
| private void ResetTime(object sender, PropertyChangedEventArgs e) |
| { |
| start = DateTime.Now; |
| } |
| private void Example_Loaded(object sender, RoutedEventArgs e) |
| { |
| RadGridView1.ItemsSource = new MyBusinessObjects().GetData(100); |
| } |
| private void RadGridView1_DataLoaded(object sender, EventArgs e) |
| { |
| RadGridView1.FilterDescription.PropertyChanged += FilterDescription_PropertyChanged; |
| TextBlock1.Text = String.Format("Total time to load data: {0} ms", |
| Math.Round((DateTime.Now - start).TotalMilliseconds)); |
| } |
| private void FilterDescription_PropertyChanged(object sender, PropertyChangedEventArgs e) |
| { |
| RadGridView1.FilterDescription.PropertyChanged -= FilterDescription_PropertyChanged; |
| ResetTime(sender, e); |
| } |
| private void butLight_Click(object sender, RoutedEventArgs e) |
| { |
| Resources.MergedDictionaries.Clear(); |
| Resources.MergedDictionaries.Add(lightColors); |
| } |
| private void butDark_Click(object sender, RoutedEventArgs e) |
| { |
| Resources.MergedDictionaries.Clear(); |
| Resources.MergedDictionaries.Add(darkColors); |
| } |
| } |
| public class MyBusinessObjects |
| { |
| private string[] names = new string[] |
| { |
| "Côte de Blaye", "Boston Crab Meat", |
| "Singaporean Hokkien Fried Mee", "Gula Malacca", "Rogede sild", |
| "Spegesild", "Zaanse koeken", "Chocolade", "Maxilaku", "Valkoinen suklaa" |
| }; |
| private double[] prizes = new double[] |
| { |
| 23.2500, 9.0000, 45.6000, 32.0000, |
| 14.0000, 19.0000, 263.5000, 18.4000, 3.0000, 14.0000 |
| }; |
| private DateTime[] dates = new DateTime[] |
| { |
| new DateTime(2007, 5, 10), new DateTime(2008, 9, 13), |
| new DateTime(2008, 2, 22), new DateTime(2009, 1, 2), |
| new DateTime(2007, 4, 13), |
| new DateTime(2008, 5, 12), new DateTime(2008, 1, 19), |
| new DateTime(2008, 8, 26), |
| new DateTime(2008, 7, 31), new DateTime(2007, 7, 16) |
| }; |
| private bool[] bools = new bool[] {true, false, true, false, true, false, true, false, true, false}; |
| public IEnumerable<MyBusinessObject> GetData(int maxItems) |
| { |
| var rnd = new Random(); |
| return from i in Enumerable.Range(0, maxItems) |
| select new MyBusinessObject(i, names[rnd.Next(9)], prizes[rnd.Next(9)], |
| dates[rnd.Next(9)], bools[rnd.Next(9)]); |
| } |
| public class MyBusinessObject |
| { |
| private int id; |
| private string name; |
| private double unitPrice; |
| private DateTime date; |
| private bool discontinued; |
| public MyBusinessObject(int ID, string Name, double UnitPrice, DateTime Date, |
| bool Discontinued) |
| { |
| this.ID = ID; |
| this.Name = Name; |
| this.UnitPrice = UnitPrice; |
| this.Date = Date; |
| this.Discontinued = Discontinued; |
| } |
| public int ID |
| { |
| get { return id; } |
| set { id = value; } |
| } |
| public string Name |
| { |
| get { return name; } |
| set { name = value; } |
| } |
| public double UnitPrice |
| { |
| get { return unitPrice; } |
| set { unitPrice = value; } |
| } |
| public DateTime Date |
| { |
| get { return date; } |
| set { date = value; } |
| } |
| public bool Discontinued |
| { |
| get { return discontinued; } |
| set { discontinued = value; } |
| } |
| } |
| } |
| } |
<telerik:RadGridView Margin="-2,2,2,-2" AutoGenerateColumns="False" Name="radGridView1" ItemsSource="{Binding PatientMedications}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn HeaderText="Name" DataMemberBinding="{Binding Path=Drug_.Name}" UniqueName="{x:Null}"/>
<telerik:GridViewDataColumn HeaderText="Dosage" DataMemberBinding="{Binding Path=Dosage}" UniqueName="{x:Null}" />
<telerik:GridViewDataColumn HeaderText="Started" DataMemberBinding="{Binding Path=StartTime}" UniqueName="{x:Null}" />
<telerik:GridViewDataColumn HeaderText="Ended" DataMemberBinding="{Binding Path=EndTime}" UniqueName="{x:Null}" />
<telerik:GridViewDataColumn HeaderText="Comments" DataMemberBinding="{Binding Path=Comments}" UniqueName="{x:Null}" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
Thanks,
Billy Jacobs
I want to use updates to the DataContexts to auto update the grid, ItemsSource="{Binding Path=ItemsSource}" works for the data, but i cannot figure out the selected row.