2011-04-28 35 views
0

我想这是一个相当简单的问题,但我已经花了相当长的时间弄清楚了。ContentControl及其子项 - 相同大小?

我有一个类,PresentationItem,它是从ContentControl派生的。我在Expression Blend中工作,这会给PresentationItem的高度和宽度带来问题。

当我插入一个PresentationItem时,它会自动调整太大的网格尺寸(800x600)。然后,当我插入例如一个文本块时,文本块的大小变小。我认为这是正常和预期的行为。

我想要的是presentationitem和Content子项(例如文本块)具有相同的大小。当我有几个这样的尺寸时,使用两种不同的尺寸是令人讨厌的。因此,无论是presentationitem内的内容应该被拉伸,还是presentationitem都应该调整大小以适合其子女。

(此外,使用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> 

改变什么,在哪里?我想这是一些“*”或“汽车”在正确的地方!

+0

看起来您需要重写TextBlock的默认水平和垂直对齐。例如,尝试将作为内容而不是TextBlock。它是否扩大以填充内容演示者? – 2011-04-28 19:56:34

回答

1

尝试将派生控件的Horizo​​ntalContentAlignment和VerticalContentAlignment设置为Stretch。

相关问题