Hallo,
ich habe zuzeit folgendes Problem: In einem Window mit einer Ribbonbar möchte ich mir Office-like Groupboxes für den Backstage-Bereich erstellen.
das mache ich über ein Template für die normale Groupbox.
Hier der Code dazu:
<Style x:Key="BackStageGroupStyle"
TargetType="{x:Type GroupBox}">
<Setter Property="HorizontalAlignment"
Value="Left" />
<Setter Property="VerticalAlignment"
Value="Top" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupBox}">
<Grid SnapsToDevicePixels="true">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Label Grid.Column="0"
Grid.ColumnSpan="2"
Content="{TemplateBinding Header}"
FontWeight="Bold"
FontSize="14.667"
Foreground="#FF4D4D4D"
HorizontalAlignment="Left" />
<Line Grid.Row="1"
StrokeThickness="0.5"
StrokeDashArray="6,4"
Stroke="#FF414141"
Margin="0,0,0,10"
Grid.Column="0"
Grid.ColumnSpan="2"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
X1="{Binding RelativeSource={RelativeSource Mode=Self},Path=ActualWidth}" />
<ContentPresenter Grid.Column="1"
Grid.Row="2"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Margin="15,0,0,0" />
<Line Grid.Column="3"
Grid.Row="0"
Grid.RowSpan="3"
StrokeThickness="0.1"
Y1="{Binding RelativeSource={RelativeSource Mode=Self},Path=ActualHeight}"
Margin="6,0,12,0">
<Line.Stroke>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="#00838383"
Offset="0" />
<GradientStop Color="#00BCBCBC"
Offset="1" />
<GradientStop Color="#FF292929"
Offset="0.057" />
<GradientStop Color="#FF313131"
Offset="0.948" />
</LinearGradientBrush>
</Line.Stroke>
</Line>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Das sieht auch schon ganz gut aus so. Ein Problem habe ich allerdings.
Wenn ich nun eine Groupbox mit diesem Style in ein Grid packe (zusammen mit ein paar anderen) und HorizontalAlignment auf "Stretch" stelle, dann stretched er mir die Groupbox über das ganze Window und interessiert sich nicht für die Größe des Grids.
Entferne ich den Style dann verählt sich die Groupbox genau wie erwartet. Sie wird genau so groß, dass sie die ganze Zelle ausfüllt, vergrößert sie aber nicht.
Wie kann ich dieses Verhalten bei meinem Style erreichen?