| 

.NET C# Java Javascript Exception

4
Hallo erstmal,
ich habe folgendes Problem:
In einem Expander habe ich eine ListBox platziert. Die ListBox fällt in der Höhe um einiges größer aus als der Expander-Contentbereich. Ich hätte gern, dass die ListBox nicht über die sichtbare Höhe des Expanders hinausläuft und scrollbar wird wenn nicht alle ListBoxItems angezeigt werden können. Ohne Verwendung des eigenen Expander-Styles (MyExpanderStyle) funktioniert alles wie gewünscht. Mit meinem eigenen Style läuft die ListBox aus dem sichtbaren Bereich des Expanders hinaus ohne Scrollbalken. Wenn ich der ListBox eine feste Höhe geben, dann funktionierts auch, aber die Höhe soll in Abhängigkeit von der Fenstergröße variabel bleiben.
Hier mein Code:
<Expander Name="xyz" Grid.Row="0" IsExpanded="True" 
Style="{StaticResource MyExpanderStyle}">
<Expander.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30px"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" VerticalContentAlignment="Center">TEXT1</Label>
<Label Grid.Column="1" VerticalContentAlignment="Center">TEXT2</Label>
</Grid>
</Expander.Header>
<Expander.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30px"/>
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" Name="myListBox" SelectionMode="Multiple">/ListBox>
...
</Grid>
</Expander.Content>
</Expander>

Hier der Code zu meinem Style:
<Style x:Key="MyExpanderStyle" TargetType="{x:Type Expander}">
<Setter Property="Margin" Value="0,0,0,-4"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Expander}">
<Grid x:Name="grdExpanderGrid">
<Grid.RowDefinitions>
<RowDefinition x:Name="HeaderRow" Height="Auto" />
<RowDefinition x:Name="ContentRow" Height="Auto" />
</Grid.RowDefinitions>
<!-- HEADER-->
<Border x:Name="HeaderFrame" Grid.Row="0" BorderThickness="1"
BorderBrush="Transparent" Background="Transparent">
<DockPanel x:Name="HeaderPanel">
<ToggleButton x:Name="HeaderToggleButton"
Margin="2,2,4,2"
OverridesDefaultStyle="True"
VerticalAlignment="Top"
Template="{StaticResource ExpanderToggleButton}"
IsChecked="{Binding IsExpanded, Mode=TwoWay,
RelativeSource={RelativeSource
TemplatedParent}}">
</ToggleButton>
<ContentPresenter x:Name="HeaderContent" ContentSource="Header"
RecognizesAccessKey="True"
VerticalAlignment="Center"/>
</DockPanel>
</Border>
<!--EXPANDER_CONTENT-->
<Border x:Name="ContentFrame" Grid.Row="1" BorderThickness="1">
<DockPanel x:Name="ContentPanel">
<!--EMPTY_SPACE-->
<Label x:Name="EmptyPlaceholder" Background="Transparent"
Width="{Binding ElementName=HeaderToggleButton,
Path=ActualWidth}"
Margin="{Binding ElementName=HeaderToggleButton,Path=Margin}">
<Label.LayoutTransform>
<ScaleTransform ScaleY="0"/>
</Label.LayoutTransform>
</Label>
<ContentPresenter x:Name="Content" ContentSource="Content"
Width="{Binding ElementName=HeaderContent,
Path=ActualWidth}"
Margin="0,0,0,4"
VerticalAlignment="Stretch">
<ContentPresenter.LayoutTransform>
<ScaleTransform ScaleY="0"/>
</ContentPresenter.LayoutTransform>
</ContentPresenter>
</DockPanel>
</Border>

<ContentPresenter Content="{TemplateBinding ContentControl.Content}"
ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"
Name="ExpandSite"
Margin="{TemplateBinding Control.Padding}"
HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
Visibility="Collapsed"
Focusable="False"
DockPanel.Dock="Bottom" />
</Grid>
<!--EXPANDER-CONTENT ANIMATION-->
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Content" Storyboard.TargetProperty="(ContentPresenter.LayoutTransform).(ScaleTransform.ScaleY)" To="1" Duration="0:0:0.4"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Content" Storyboard.TargetProperty="(ContentPresenter.LayoutTransform).(ScaleTransform.ScaleY)" To="0" Duration="0:0:0.4"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

Wie gesagt mit dem Default-Expander ohne meinen Style funktioniert es. Was mach ich falsch?
News:
03.04.2012
Silas777 31 3
1 Antwort
1
Hat sich erledigt!
Statt einem Grid hab ich ein DockPanel als Container in mein ControlTemplate eingebaut und siehe da, es funktioniert.
03.04.2012
Silas777 31 3

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