or
<telerik:RadGridView> <telerik:RadGridView.Columns> <telerik:GridViewColumn> <telerik:GridViewColumn.CellTemplate> <DataTemplate> <telerik:RadSplitButton> <telerik:RadSplitButton.DropDownContent> <ListBox SelectionChanged="ListBox_SelectionChanged"/> </telerik:RadSplitButton.DropDownContent> </telerik:RadSplitButton> </DataTemplate> </telerik:GridViewColumn.CellTemplate> </telerik:GridViewColumn> </telerik:RadGridView.Columns> </telerik:RadGridView> Private Sub ListBox_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs) Dim button As System.Object = LogicalTreeHelper.GetParent(e.OriginalSource) End SubDirectCast(button, Telerik.Windows.Controls.RadSplitButton).IsOpen = Falsepublic void LoadData(int startIndex, int itemCount) { var baseQuery = (EntityQuery<T>) Query .Where(FilterDescriptors); baseQuery = (EntityQuery<T>) Query.GroupBy(GroupDescriptors); // Skip needs an order // if (SortDescriptors.Count == 0)// SortDescriptions.Add(new SortDescription(InitialOrderBy.ToString(), InitialOrderByDirection)); //SortDescriptions.Add(new SortDescription("Sid", ListSortDirection.Ascending)); var resultQuery = (EntityQuery<T>) QueryableExtensions.Take(baseQuery .Sort(SortDescriptors) .Skip(startIndex), itemCount); resultQuery.QueryStrategy = new QueryStrategy(FetchStrategy.DataSourceAndCache, MergeStrategy.PreserveChanges); resultQuery.ExecuteAsync().Completed += (s, e) => { Load(startIndex, e.Results); }; }
public class MyVariable : ViewModelBase, INotifyPropertyChanged{ public string Name { get; set; } public CellValue First { get; set; } public CellValue Second { get; set; } public CellValue Third { get; set; } public string Remarks { get; set; } public ObservableCollection<MyVariable> ChildCollection { get; set; } } public class CellValue : INotifyPropertyChanged { public string Key { get; set; } public double? Value { get; set; } public string Unit { get; set; } public string Location { get; set; } public bool IsEditable { get; set; } }<telerik:RadTreeListView x:Name="radTreeListView1" AutoGenerateColumns="False" RowIndicatorVisibility="Collapsed" RowLoaded="radTreeListView1_RowLoaded" RowIsExpandedChanging="radTreeListView1_RowIsExpandedChanging"> <telerik:RadTreeListView.ChildTableDefinitions> <telerik:TreeListViewTableDefinition ItemsSource="{Binding ChildCollection}" /> </telerik:RadTreeListView.ChildTableDefinitions> <telerik:RadTreeListView.Columns> <telerik:GridViewDataColumn Header="Parameters" DataMemberBinding="{Binding Name}" IsReadOnly="True" Width="auto" /> <telerik:GridViewDataColumn Header="First Value" DataMemberBinding="{Binding First.Value, Mode=TwoWay}" DataFormatString="{Binding First.Unit, Converter={StaticResource numberConverter}}" IsReadOnlyBinding="{Binding First.IsEditable}" CellStyleSelector="{StaticResource cellStyle}" Width="auto" /> <telerik:GridViewDataColumn Header="Second Value" DataMemberBinding="{Binding Second.Value, Mode=TwoWay}" DataFormatString="{Binding Second.Unit, Converter={StaticResource numberConverter}}" IsReadOnlyBinding="{Binding Second.IsEditable}" CellStyleSelector="{StaticResource cellStyle}" Width="auto" /> <telerik:GridViewDataColumn Header="Third Value" DataMemberBinding="{Binding Third.Value, Mode=TwoWay}" DataFormatString="{Binding Third.Unit, Converter={StaticResource numberConverter}}" IsReadOnlyBinding="{Binding Third.IsEditable}" CellStyleSelector="{StaticResource cellStyle}" Width="auto" /> <telerik:GridViewDataColumn Header="Remarks" DataMemberBinding="{Binding Remarks}" IsReadOnly="True" Width="*" /> </telerik:RadTreeListView.Columns>
</telerik:RadTreeListView>public class NumberConverter : IValueConverter{ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { CellValue cellValue = value as CellValue; if (cellValue != null && cellValue.Unit == "%") { return "{0:p2}"; } else return "{0:n2}"; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value; }}<telerik:GridViewDataColumn Header="First Value" DataMemberBinding="{Binding First.Value, Mode=TwoWay}" DataFormatString="{Binding First, Converter={StaticResource numberConverter}}" IsReadOnlyBinding="{Binding First.IsEditable}" CellStyleSelector="{StaticResource cellStyle}" Width="auto" />
<telerik:GridViewDataColumn Header="Second Value" DataMemberBinding="{Binding Second.Value, Mode=TwoWay}" DataFormatString="{Binding Second, Converter={StaticResource numberConverter}}" IsReadOnlyBinding="{Binding Second.IsEditable}" CellStyleSelector="{StaticResource cellStyle}" Width="auto" />
<telerik:GridViewDataColumn Header="Third Value" DataMemberBinding="{Binding Third.Value, Mode=TwoWay}" DataFormatString="{Binding Third, Converter={StaticResource numberConverter}}" IsReadOnlyBinding="{Binding Third.IsEditable}" CellStyleSelector="{StaticResource cellStyle}" Width="auto" />CellValue cellValue = value as CellValue;