Я полагаю, что это довольно простой (читай: очень простой) вопрос, но я использовал довольно много времени, чтобы разобраться с ним.
У меня есть класс PresentationItem, производный от ContentControl.Я работаю в Expression Blend, которая создает проблему с высотой и шириной PresentationItem.
Когда я вставляю PresentationItem, он автоматически устанавливает слишком полную сетку (800x600).Затем, когда я вставляю, например, текстовый блок, размер текстового блока становится небольшим.Я думаю, что это нормальное и ожидаемое поведение.
Я хочу, чтобы презентационный элемент и дочерний элемент Content (например, текстовый блок) имели одинаковый размер.Раздражительно работать с двумя разными размерами, когда у меня их несколько.Таким образом, либо содержимое внутри презентационного элемента должно быть растянуто, либо презентационный элемент должен изменить размер, чтобы соответствовать его дочерним элементам.
(Кроме того, использование чего-то другого, кроме ContentControl, не является опцией).У меня есть следующий стиль:
<Style TargetType="local:JSLDPresentationItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:JSLDPresentationItem">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="PresentationStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.3"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="FocusedPresenting">
<Storyboard>
<DoubleAnimation Duration="0" To="1.2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="LocalLayoutPanel" />
<DoubleAnimation Duration="0" To="1.2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="LocalLayoutPanel" />
</Storyboard>
</VisualState>
<VisualState x:Name="AfterPresenting">
<Storyboard>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="LocalLayoutPanel" />
</Storyboard>
</VisualState>
<VisualState x:Name="BeforePresenting">
<Storyboard>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="LocalLayoutPanel" />
</Storyboard>
</VisualState>
<VisualState x:Name="UnfocusedPresenting"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid x:Name="LocalLayoutPanel" Margin="0,0,0,0" VerticalAlignment="Top" >
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform>
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Что изменить и где?Я думаю, это какой-то "*" или "авто" в нужном месте!