如何修复DataTemplate Grid的大小和中心可见内容?

时间:2015-04-02 14:06:02

标签: c# wpf xaml grid resize

如果不写小说就很难形成这个问题......

我在样式中有一个DataTemplate(如果重要的话,应用于TabItem),它以垂直方式提供包含两个TextBlock的Grid。

我希望能够让网格保持相同的大小(在这种情况下为高度)和第一个以TextBlock为中心的(此处为垂直方向) 第二个TextBlock已折叠(或隐藏,我不在乎)。

enter image description here enter image description here

我怎样才能做到这一点?

这是我到目前为止(Text值是占位符,它们应该是绑定):

<Style TargetType="{x:Type TabControl}" x:Key="FlatTabControl">
    <Style.Resources>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="HeaderTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <TextBlock VerticalAlignment="Center" Text="TOP/MIDDLE"/>
                            <TextBlock Grid.Row="1" Foreground="Green" Text="BOTTOM/COLLAPSED"/>
                        </Grid>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Style.Resources>
</Style>

1 个答案:

答案 0 :(得分:0)

你的意思是这样吗?

<Style TargetType="{x:Type TabControl}" >
        <Style.Resources>
            <Style TargetType="{x:Type TabItem}">
                <Setter Property="HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Grid Width="150" Height="30">
                                <Grid.RowDefinitions>
                                    <RowDefinition/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
                                <TextBlock VerticalAlignment="Center" Text="TOP/MIDDLE" />
                                <TextBlock Grid.Row="1" Foreground="Green" Text="asdsad"  Height="Auto" x:Name="TextTwo"/>
                            </Grid>
                            <DataTemplate.Triggers>
                                <Trigger SourceName="TextTwo" Property="Text"  Value="">
                                    <Setter TargetName="TextTwo"  Property="Height" Value="0"/>
                                </Trigger>
                            </DataTemplate.Triggers>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Style.Resources>
    </Style>