2013-12-14 3 views
0

У меня есть следующий код XAML:расширение WPF TextBlock внутри макета

<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 [email protected]}" Width="132" /> 
       <TextBlock x:Name="Size" Foreground="DarkGray" TextWrapping="Wrap" Text="{Binding [email protected]}" /> 
      </StackPanel> 
      <Image x:Name="Img" Source="BtnImg/Computer.png" Stretch="Fill" Margin="10,0,5,0" Width="48" Height="48"/> 
     </DockPanel> 
    </DataTemplate> 

Выход:

enter image description here

Я пытаюсь получить тот же внешний вид Windows Explorer, как много насколько это возможно, поэтому я хочу сохранить оба текстовых блока «Имя» и «Размер» в центре, когда текст короток, и когда длина текста имени больше, чем пространство элемента, которое оно увеличивает (на 1 строку, возможно), чтобы получить этот вид:

enter image description here

Так как я хотел бы быть в состоянии сделать это?

ответ

1

Я думаю, что в StackPanel вместо установки высоты вы должны установить MaxHeight и значение свойства VerticalAlignment должны быть Центрировать вместо дна и что должно делать свою работу:

<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 [email protected]}" Width="132" /> 
      <TextBlock x:Name="Size" Foreground="DarkGray" TextWrapping="Wrap" Text="{Binding [email protected]}" /> 
     </StackPanel> 
     <Image x:Name="Img" Source="BtnImg/Computer.png" Stretch="Fill" Margin="10,0,5,0" Width="48" Height="48"/> 
    </DockPanel> 
</DataTemplate> 

Надеется, что это работает !!!

+0

работал отлично, спасибо –

+0

еще один вопрос, когда textBlock имеет 2 строки, как уменьшить пространство между первой строкой и второй? –

+1

Установите TextBlock LineStackingStrategy = "BlockLineHeight" и свойство LineHeight для любого значения, которое вы хотите. – user1246682

Смежные вопросы