diff options
author | ermau <me@ermau.com> | 2012-04-18 20:45:37 +0400 |
---|---|---|
committer | ermau <me@ermau.com> | 2012-04-18 20:45:37 +0400 |
commit | d702d8bdfdbd337db2447b5a9d5793b07ef8e2d5 (patch) | |
tree | 42ddd60c66323271c6ed2ef0beb258a093ef016b | |
parent | e1899efae1e8aa5f3bdeaed316b90baffde62757 (diff) |
Trying to add child virtualization to TreeViewvirttreelistview
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/ExTreeViewItem.cs | 22 | ||||
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/TreeView.xaml | 32 | ||||
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/TreeViewBackend.cs | 11 |
3 files changed, 44 insertions, 21 deletions
diff --git a/Xwt.WPF/Xwt.WPFBackend/ExTreeViewItem.cs b/Xwt.WPF/Xwt.WPFBackend/ExTreeViewItem.cs index 4b702822..2f29d8cc 100644 --- a/Xwt.WPF/Xwt.WPFBackend/ExTreeViewItem.cs +++ b/Xwt.WPF/Xwt.WPFBackend/ExTreeViewItem.cs @@ -198,20 +198,20 @@ namespace Xwt.WPFBackend private void OnLoaded (object sender, RoutedEventArgs routedEventArgs) { - ItemsControl parent = ItemsControlFromItemContainer (this); - if (parent == null) - return; + //ItemsControl parent = ItemsControlFromItemContainer (this); + //if (parent == null) + // return; - int index = parent.Items.IndexOf (DataContext); - if (index != parent.Items.Count - 1) - return; + //int index = parent.Items.IndexOf (DataContext); + //if (index != parent.Items.Count - 1) + // return; - foreach (var column in this.view.View.Columns) { - if (Double.IsNaN (column.Width)) - column.Width = column.ActualWidth; + //foreach (var column in this.view.View.Columns) { + // if (Double.IsNaN (column.Width)) + // column.Width = column.ActualWidth; - column.Width = Double.NaN; - } + // column.Width = Double.NaN; + //} } } } diff --git a/Xwt.WPF/Xwt.WPFBackend/TreeView.xaml b/Xwt.WPF/Xwt.WPFBackend/TreeView.xaml index 3848add0..472a51a1 100644 --- a/Xwt.WPF/Xwt.WPFBackend/TreeView.xaml +++ b/Xwt.WPF/Xwt.WPFBackend/TreeView.xaml @@ -1,20 +1,32 @@ <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:l="clr-namespace:Xwt.WPFBackend;assembly=Xwt.WPF"> + xmlns:l="clr-namespace:Xwt.WPFBackend;assembly=Xwt.WPF" + xmlns:aero="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"> <Style TargetType="{x:Type l:ExTreeViewItem}"> <Setter Property="IsExpanded" Value="{Binding IsExpanded,Mode=TwoWay}" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="l:ExTreeViewItem"> - <StackPanel> - <Border Name="HBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition MinWidth="19" Width="Auto" /> + <ColumnDefinition Width="Auto" /> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="Auto" /> + <RowDefinition /> + </Grid.RowDefinitions> + + <ToggleButton Grid.Column="0" x:Name="Expander" Style="{DynamicResource ExpandCollapseToggleStyle}" IsChecked="{Binding IsExpanded, RelativeSource={x:Static RelativeSource.TemplatedParent}}" ClickMode="Press" /> + + <Border Grid.Column="1" Name="HBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> <GridViewRowPresenter x:Name="PART_Header" Content="{TemplateBinding Header}" Columns="{Binding Path=View.Columns, RelativeSource={RelativeSource AncestorType={x:Type l:ExTreeView}}}" /> </Border> - <ItemsPresenter x:Name="ItemsHost" /> - </StackPanel> - + + <ItemsPresenter Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" x:Name="ItemsHost" /> + </Grid> <ControlTemplate.Triggers> <Trigger Property="IsExpanded" Value="False"> <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed" /> @@ -64,10 +76,16 @@ <Setter.Value> <ControlTemplate> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"> - <ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}" Padding="{TemplateBinding Padding}"> + <ScrollViewer x:Name="TreeViewScrollViewer" Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}" Padding="{TemplateBinding Padding}" CanContentScroll="false" Focusable="false" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </ScrollViewer> </Border> + + <ControlTemplate.Triggers> + <Trigger Property="VirtualizingStackPanel.IsVirtualizing" Value="true"> + <Setter Property="CanContentScroll" TargetName="TreeViewScrollViewer" Value="true" /> + </Trigger> + </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> diff --git a/Xwt.WPF/Xwt.WPFBackend/TreeViewBackend.cs b/Xwt.WPF/Xwt.WPFBackend/TreeViewBackend.cs index 4f59eadb..92902886 100644 --- a/Xwt.WPF/Xwt.WPFBackend/TreeViewBackend.cs +++ b/Xwt.WPF/Xwt.WPFBackend/TreeViewBackend.cs @@ -188,10 +188,15 @@ namespace Xwt.WPFBackend int index = Tree.View.Columns.IndexOf (col); if (index == 0) { - var dockFactory = CreateExpanderDock (); - dockFactory.AppendChild (cellTemplate); + //var dockFactory = CreateExpanderDock (); + //dockFactory.AppendChild (cellTemplate); - col.CellTemplate.VisualTree = dockFactory; + //col.CellTemplate.VisualTree = dockFactory; + + //Tree.ItemTemplate = new HierarchicalDataTemplate { + // VisualTree = cellTemplate, + // ItemsSource = new Binding("Children") + // }; } break; |