or
<Telerik:RadTreeView x:Name="RadTreeView" DockPanel.Dock="Bottom"/>
RadTreeViewItem
aa;
for (int i = 0; i < CommodityCollection.Count; i++) {
aa = new RadTreeViewItem();
aa.Header = CommodityCollection[i].ABC;
this.RadTreeView.Items.Add(aa);
Now my problem is How to add child node in the RadTreeView?
/// <summary> |
/// Interaction logic for Window1.xaml |
/// </summary> |
public partial class Window1 : Window |
{ |
public ObservableCollection<Item> Items |
{ |
get { return (ObservableCollection<Item>)GetValue(ItemsProperty); } |
set { SetValue(ItemsProperty, value); } |
} |
// Using a DependencyProperty as the backing store for Items. This enables animation, styling, binding, etc... |
public static readonly DependencyProperty ItemsProperty = |
DependencyProperty.Register("Items", typeof(ObservableCollection<Item>), typeof(Window1)); |
public Window1() |
{ |
InitializeComponent(); |
Items = new ObservableCollection<Item>(); |
Items.Add(new Item("Item 1")); |
Items.Add(new Item("Item 2")); |
Items.Add(new Item("Item 3")); |
} |
} |
public class Item |
{ |
public string Header { get; set; } |
public ObservableCollection<Item> Items { get; set; } |
public Item(string header) |
{ |
Header = header; |
Items = new ObservableCollection<Item>(); |
} |
} |
<Window.Resources> |
<HierarchicalDataTemplate x:Key="NodeTemplate" ItemsSource="{Binding Path=Items}"> |
<StackPanel Orientation="Horizontal"> |
<TextBlock Text="{Binding Path=Header}"/> |
</StackPanel> |
</HierarchicalDataTemplate> |
</Window.Resources> |
<Grid> |
<Telerik:RadTreeView IsDragDropEnabled="True" Name="t" |
ItemsSource="{Binding Path=Items, ElementName=window}" |
ItemTemplate="{StaticResource NodeTemplate}"> |
</Telerik:RadTreeView> |
</Grid> |
at Telerik.Windows.Controls.RadTreeViewItem.CheckStatePropertyChangedConstrainValue(DependencyObject d, Object newValue) |
at System.Windows.DependencyObject.ProcessCoerceValue(DependencyProperty dp, PropertyMetadata metadata, EntryIndex& entryIndex, Int32& targetIndex, EffectiveValueEntry& newEntry, EffectiveValueEntry& oldEntry, Object& oldValue, Object baseValue, CoerceValueCallback coerceValueCallback, Boolean coerceWithDeferredReference, Boolean skipBaseValueChecks) |
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, OperationType operationType) |
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, OperationType operationType, Boolean isInternal) |
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value) |
at Telerik.Windows.Controls.RadTreeViewItem.set_CheckState(ToggleState value) |
at Telerik.Windows.Controls.RadTreeViewItem.SetCheckStateWithNoPropagation(ToggleState state) |
at Telerik.Windows.Controls.RadTreeViewItem.Render(Boolean recursive) |
at Telerik.Windows.Controls.RadTreeViewItem.OnItemsChanged(NotifyCollectionChangedEventArgs e) |
at System.Windows.Controls.ItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) |
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e) |
at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args) |
at System.Windows.Controls.ItemCollection.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type managerType, Object sender, EventArgs e) |
at System.Windows.WeakEventManager.DeliverEventToList(Object sender, EventArgs args, ListenerList list) |
at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args) |
at System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args) |
at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args) |
at System.Windows.Data.ListCollectionView.ProcessCollectionChangedWithAdjustedIndex(NotifyCollectionChangedEventArgs args, Int32 adjustedOldIndex, Int32 adjustedNewIndex) |
at System.Windows.Data.ListCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args) |
at System.Windows.Data.CollectionView.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args) |
at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) |
at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item) |
at System.Collections.ObjectModel.Collection`1.Add(T item) |
at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Add(Object value) |
at Telerik.Windows.Controls.RadTreeView.EndDrag() |
at Telerik.Windows.Controls.RadTreeView.HandleMouseUp(MouseEventArgs e) |
at Telerik.Windows.Controls.RadTreeView.RadTreeView_MouseLeftButtonUp(Object sender, MouseEventArgs e) |
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) |
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) |
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) |
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) |
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) |
at System.Windows.UIElement.CrackMouseButtonEventAndReRaiseEvent(DependencyObject sender, MouseButtonEventArgs e) |
at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) |
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) |
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) |
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) |
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) |
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) |
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) |
at System.Windows.Input.InputManager.ProcessStagingArea() |
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) |
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) |
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) |
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) |
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) |
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) |
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) |
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) |
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) |
at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) |
at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter) |
at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg) |
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) |
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) |
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) |
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) |
at System.Windows.Threading.Dispatcher.Run() |
at System.Windows.Application.RunDispatcher(Object ignore) |
at System.Windows.Application.RunInternal(Window window) |
at System.Windows.Application.Run(Window window) |
at System.Windows.Application.Run() |
at Telerik.App.Main() in C:\Documents and Settings\talg\Desktop\TreeViewDrag\Telerik\Telerik\obj\Debug\App.g.cs:line 0 |
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) |
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) |
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() |
at System.Threading.ThreadHelper.ThreadStart_Context(Object state) |
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) |
at System.Threading.ThreadHelper.ThreadStart() |
<Window x:Class="AddColumnIssue.Window1" |
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" |
Title="Window1" Height="380" Width="701"> |
<Grid> |
<Grid.RowDefinitions> |
<RowDefinition Height="30" /> |
<RowDefinition Height="*" /> |
</Grid.RowDefinitions> |
<Button x:Name="AddColumnButton" Grid.Row="0" Height="23" Width="75" Click="AddColumnButton_Click" >Add Column</Button> |
<telerik:RadGridView x:Name="ItemsGrid" Grid.Row="1" ItemsSource="{Binding}" AutoGenerateColumns="False" /> |
</Grid> |
</Window> |
public partial class Window1 : Window |
{ |
public Window1() |
{ |
InitializeComponent(); |
AddColumns(); |
this.DataContext = BuildCustomers(); |
} |
private void AddColumnButton_Click(object sender, RoutedEventArgs e) |
{ |
AddColumn(typeof(string), "Email", 200); |
RefreshGrid(); |
} |
private void AddColumns() |
{ |
AddColumn(typeof(int), "Number", 100); |
AddColumn(typeof(string), "Name", 100); |
} |
private void AddColumn(Type dataType, string name, int width) |
{ |
GridViewDataColumn column = new GridViewDataColumn(); |
column.DataType = dataType; |
column.HeaderText = name; |
column.UniqueName = name; |
column.Width = new GridLength(width); |
column.IsReadOnly = true; |
ItemsGrid.Columns.Add(column); |
} |
private void RefreshGrid() |
{ |
ItemsGrid.Rebind(); |
ItemsGrid.UpdateLayout(); |
} |
private static ObservableCollection<Customer> BuildCustomers() |
{ |
ObservableCollection<Customer> customers = new ObservableCollection<Customer>(); |
ObservableCollection<Order> orders = new ObservableCollection<Order>(); |
for (int i = 0; i < 10; i++) |
orders.Add(new Order { Number = i, Details = "Order" + i }); |
for (int i = 0; i < 100; i++) |
customers.Add(new Customer { Email = "Mail" + i, Name = "Name" + i, Number = i, Orders = orders }); |
return customers; |
} |
} |