or
class CustomGridViewToggleRowDetailsColumn : GridViewBoundColumnBase { public static RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent( "Click", RoutingStrategy.Bubble, typeof( ToggleRowDetailsColumnRoutedEventHandler ), typeof( CustomGridViewToggleRowDetailsColumn ) ); public GridViewCell Cell { get; set; } public event RoutedEventHandler Click { add { AddHandler( ClickEvent, value ); } remove { RemoveHandler( ClickEvent, value ); } } public override object Header { get { return null; } set { base.Header = value; } } public GridViewToggleButton ToggleButton { get; set; } private Binding toggleButtonVisibility; public Binding ToggleButtonVisibility { get { return toggleButtonVisibility; } set { toggleButtonVisibility = value; } } public CustomGridViewToggleRowDetailsColumn() { this.EditTriggers = GridViewEditTriggers.None; } public override bool CanFilter() { return false; } public override bool CanGroup() { return false; } public override bool CanSort() { return false; } public override FrameworkElement CreateCellElement( GridViewCell cell, object dataItem ) { Cell = cell; ToggleButton = new GridViewToggleButton { Margin = new System.Windows.Thickness( 3 ) }; ToggleButton.Click += new RoutedEventHandler( ToggleButton_Click ); if ( this.DataMemberBinding != null ) { ToggleButton.SetBinding( GridViewToggleButton.IsCheckedProperty, this.DataMemberBinding ); } if ( ToggleButtonVisibility != null ) { ToggleButton.SetBinding( GridViewToggleButton.VisibilityProperty, ToggleButtonVisibility ); } GridViewRow row = cell.ParentRow as GridViewRow; row.SetBinding( GridViewRow.DetailsVisibilityProperty, new Binding( "IsChecked" ) { Source = ToggleButton, Converter = new BooleanToVisibilityConverter(), Mode = BindingMode.TwoWay } ); return ToggleButton; } void ToggleButton_Click( object sender, RoutedEventArgs e ) { // Raise our Click event RoutedEventArgs newEventArgs = new ToggleRowDetailsColumnRoutedEventArgs( ClickEvent, Cell ); RaiseEvent( newEventArgs ); } } public class ToggleRowDetailsColumnRoutedEventArgs : RoutedEventArgs { public GridViewCell Cell { get; set; } public GridViewRow Row { get { return Cell.ParentRow as GridViewRow; } } public ToggleRowDetailsColumnRoutedEventArgs( RoutedEvent routedEvent, GridViewCell cell ) : base( routedEvent ) { Cell = cell; } } public delegate void ToggleRowDetailsColumnRoutedEventHandler( object sender, ToggleRowDetailsColumnRoutedEventArgs e );private void ExpandAlarms_Click( object sender, ToggleRowDetailsColumnRoutedEventArgs e ) { ReadViewModel read = e.Row.Item as ReadViewModel; if ( read.Alarms == null ) { read.Alarms = DataInterface.GetAlarmsForRead( read.ID ); } e.Handled = true; }
<telerik:GridViewMaskedTextBoxColumn Mask="P1" MaskType="Numeric" DataMemberBinding="{Binding CurrentAllocationWeight}" DisplayIndex="1" IsReadOnly="True" DataFormatString="{}{0:P1}" Header="% Of Total" ColumnGroupName="CurrentAllocation"/> var lineSeries = new LineSeries(); lineSeries.CategoryBinding = new PropertyNameDataPointBinding() { PropertyName = "TimeStamp" }; lineSeries.ValueBinding = new PropertyNameDataPointBinding() { PropertyName = "Value" }; lineSeries.ItemsSource = (chart.Chart as GuiAnalogQueue).Records;<telerik:Needle x:Name="needle" IsAnimated="True" Value="{Binding Value}"/><telerik:Needle x:Name="needle" IsAnimated="True" Value="{Binding chart.Chart.Value}"/>