布局内的WPF文本块扩展

布局内的WPF文本块扩展,wpf,layout,textblock,Wpf,Layout,Textblock,我有以下XAML代码: <DataTemplate x:Key="TileViewDT"> <DockPanel> <StackPanel Height="40.5" DockPanel.Dock="Right" Margin="5,2,5,2" VerticalAlignment="Bottom"> <TextBlock x:Name="Name" TextWrapping

我有以下XAML代码:

    <DataTemplate x:Key="TileViewDT">
        <DockPanel>
            <StackPanel Height="40.5" DockPanel.Dock="Right" Margin="5,2,5,2" VerticalAlignment="Bottom">
                <TextBlock x:Name="Name" TextWrapping="Wrap" Text="{Binding XPath=@Name}" Width="132" />
                <TextBlock x:Name="Size" Foreground="DarkGray" TextWrapping="Wrap" Text="{Binding XPath=@Size}" />
            </StackPanel>
            <Image x:Name="Img" Source="BtnImg/Computer.png" Stretch="Fill" Margin="10,0,5,0" Width="48" Height="48"/>
        </DockPanel>
    </DataTemplate>

输出:

我正在尝试尽可能多地获得Windows资源管理器的相同外观,因此当文本较短且名称文本的长度大于项目空间时,我希望将文本块“名称”和“大小”都保留在中间,以获得此外观:


那么我如何才能做到这一点呢?

我认为在Stackpanel中,您应该设置MaxHeight而不是设置Height,垂直对齐属性值应该是Center而不是Bottom,这应该可以完成您的工作:

<DataTemplate x:Key="TileViewDT">
    <DockPanel>
        <StackPanel MaxHeight="40.5" DockPanel.Dock="Right" Margin="5,2,5,2" VerticalAlignment="Center">
            <TextBlock x:Name="Name" TextWrapping="Wrap" Text="{Binding XPath=@Name}" Width="132" />
            <TextBlock x:Name="Size" Foreground="DarkGray" TextWrapping="Wrap" Text="{Binding XPath=@Size}" />
        </StackPanel>
        <Image x:Name="Img" Source="BtnImg/Computer.png" Stretch="Fill" Margin="10,0,5,0" Width="48" Height="48"/>
    </DockPanel>
</DataTemplate>


希望它能工作

还有一个问题,当textBlock有两行时,如何减少第一行和第二行之间的间距?将textBlock LineStackingStrategy=“BlockLineHeight”和LineHeight属性设置为所需的任何值。