| 

.NET C# Java Javascript Exception

3
Hallo,

ich habe hier das Problem, daß ich mit allen Mitteln versucht habe, meinen TreeView dazu zu bringen, Scrollbars anzuzeigen, sofern es notwendig ist. Ich habe schon ein bisschen gegoogelt und auch herausgefunden, daß das Stackpanel nicht funktioniert, woraufhin ich ein Grid verwendet habe.

Ich habe auch schon herausgefunden, daß es funkioniert, wenn ich dem TreeView eine feste Höhe gebe. Allerdings möchte ich, daß sich das TreeView der Größe anpaßt.

Ich verwende hier PRISM und habe ich Shell, in die ich das UserControl mit dem TreeView in die "NavigationRegion" einfüge:

<Window x:Class="Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://www.codeplex.com/prism"
Width="800" Height="600">

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<!--<RowDefinition Height="93*" />-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ItemsControl Grid.Row="1" Grid.Column="1" Width="300" Name="NavigationRegion" prism:RegionManager.RegionName="NavigationRegion">
<ItemsControl.Background>
<SolidColorBrush Color="White"/>
</ItemsControl.Background>
</ItemsControl>
<ItemsControl Grid.Row="1" Grid.Column="2" Width="Auto" Name="EditRegion" prism:RegionManager.RegionName="EditRegion">
<ItemsControl.Background>
<LinearGradientBrush>
<GradientStop Color="LightGray" Offset="0.0" />
<GradientStop Color="White" Offset="0.5" />
<GradientStop Color="DarkGray" Offset="1.0" />
</LinearGradientBrush>
</ItemsControl.Background>
</ItemsControl>
</Grid>
</Window>


<UserControl x:Class="Views.DefaultOverview"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TreeView Name="MainTreeView" Height="Auto" ItemsSource="{Binding Path=ClassNames, Mode=OneWay}">

<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>

<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
</UserControl>


Hat jemand hier eine Idee, wie ich das hinbekomme?

Liebe Grüße,

BaNDiT
News:
12.04.2012
TiMeBaNDiT76 294 2 7
1 Antwort
1
Ich kenne mich zwar mit Prism nicht aus, da ich mich damals für Caliburn entschieden habe, aber mich wundert ein wenig, das Du das Usercontrol in ein ItemsControl einfügst. Vielleicht könnte das etwas damit zu tun haben?

Kann es sein, dass das TreeView "unendlich" lang wird und deshalb keine Scrollbars angezeigt werden? Ich denke wenn Du ein Grid als "NavigationRegion" nehmen würdest, würde sich das Treeview wieder wie gewünscht verhalten. Allerdings denke ich, das Du dies aus bestimmten Gründen nicht ändern kannst, das ItemsControls wird ja nicht grundlos da sein.

Zumindest hatte ich vor ein paar Tagen quasi ähnlichen Stress mit einer Usercontrol, einer Liste und einem ContentControl Behälter der Beiden.
12.04.2012
Jens Duczmal 2,6k 1 3 9
Hi,

das war schonmal der richtige Tipp. Ein Grid zu verwenden ging leider nicht, da es wohl nicht das passende Interface implementiert. Allerdings möchte ich ja nur ein Element in dort platzieren. Aus diesem Grund kann man das ContentControl verwenden. Damit funktioniert es dann.
TiMeBaNDiT76 13.04.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH