Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorermau <me@ermau.com>2012-04-18 20:45:37 +0400
committerermau <me@ermau.com>2012-04-18 20:45:37 +0400
commitd702d8bdfdbd337db2447b5a9d5793b07ef8e2d5 (patch)
tree42ddd60c66323271c6ed2ef0beb258a093ef016b
parente1899efae1e8aa5f3bdeaed316b90baffde62757 (diff)
Trying to add child virtualization to TreeViewvirttreelistview
-rw-r--r--Xwt.WPF/Xwt.WPFBackend/ExTreeViewItem.cs22
-rw-r--r--Xwt.WPF/Xwt.WPFBackend/TreeView.xaml32
-rw-r--r--Xwt.WPF/Xwt.WPFBackend/TreeViewBackend.cs11
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;