2010-03-16 22 views
5

Muhtemelen bariz birşeyi özlüyorum, ancak görüntüyü DataTemplate'de Grid'deki sağa hizalamak için alamıyorum, böylece pencere gerildiğinde görüntü "çekilir". sağa doğru:WPF: Yatay Hizalama

<Window.Resources> 
    <DataTemplate x:Key="PersonTemplate" DataType="Minimal.Client.Person"> 
     <Border BorderBrush="Purple" BorderThickness="2" CornerRadius="2" Padding="5" Margin="5"> 
      <Grid Margin="10"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" MinWidth="200"/> 
        <ColumnDefinition Width="Auto" MaxWidth="200"/> 
       </Grid.ColumnDefinitions> 
       <StackPanel Grid.Column ="0" Orientation="Horizontal" > 
        <TextBlock FontFamily="Verdana" FontSize="16" FontWeight="Bold" Text="{Binding LastName}" /> 
        <TextBlock FontFamily="Verdana" FontSize="16" Text=", " /> 
        <TextBlock FontFamily="Verdana" FontSize="16" Text="{Binding FirstName}" /> 
       </StackPanel> 
       <StackPanel Grid.Column="1" Orientation="Vertical" HorizontalAlignment="Right"> 
        <Border BorderBrush="Black" BorderThickness="1"> 
         <Image Source="{Binding Picture}" Width="180" Height="150" /> 
        </Border> 
       </StackPanel> 
      </Grid> 
     </Border> 
    </DataTemplate> 
</Window.Resources> 

Herhangi bir öneriniz var mı?

cevap

3

Sanırım sorun, ikinci sütun için bir MaxWidth of 200 ayarladınız (resmin bulunduğu). Bu nedenle, sütun 200 pikselden daha geniş olmayacak ve iki sütun tüm kullanılabilir alanı kullanmayacaktır. Eğer iki sütun arasına başka bir sütun eklemek ve bu bir yıldız ölçekli yaparsanız, Görüntü sağa hizalı olacak:

<Grid Margin="10"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" MinWidth="200"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto" MaxWidth="200"/> 
    </Grid.ColumnDefinitions> 
    <StackPanel Grid.Column ="0" Orientation="Horizontal" > 
     <TextBlock FontFamily="Verdana" FontSize="16" FontWeight="Bold" Text="{Binding LastName}" /> 
     <TextBlock FontFamily="Verdana" FontSize="16" Text=", " /> 
     <TextBlock FontFamily="Verdana" FontSize="16" Text="{Binding FirstName}" /> 
    </StackPanel> 
    <StackPanel Grid.Column="2" Orientation="Vertical" HorizontalAlignment="Right"> 
     <Border BorderBrush="Black" BorderThickness="1"> 
      <Image Source="{Binding Picture}" Width="180" Height="150" /> 
     </Border> 
    </StackPanel> 
</Grid> 

Bu şekilde, bu benim için çalışıyor. Ancak, StackPanels kullanırken dikkatli olmalısınız. Her zaman ihtiyaç duydukları kadar yer kaplarlar. Ve bu kadar yer verilmediyse, içeriğin bir kısmı gizlenecektir. gehho.

+0

Güzel, mükemmel çalışıyor! Teşekkürler. – emptyset

2

İkinci sütun tanımınızdan "MaxWidth" i çıkarmayı ve Genişliği "*" olarak ayarlamayı deneyin.

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" MinWidth="200"/> 
    <ColumnDefinition Width="*"/> 
</Grid.ColumnDefinitions> 

Bu, açık ayarları ikinci sütununun konumunu sola doğru kaydırır.

İlgili konular