2013-07-10 51 views
0

我有一个listbox至至此我传递5行中的每一行。 XML文件:列表框与DockPanel对齐

     <ListBox x:Name="DatabaseBox"> 
         <ListBox.ItemContainerStyle> 
          <Style TargetType="ListBoxItem"> 
           <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
          </Style> 
         </ListBox.ItemContainerStyle> 
          <ListBox.ItemTemplate> 
         <DataTemplate> 
           <DockPanel"> 
            <Image x:Name="ToggleFavoriteImage" Width="15" Height="15" Tag="{Binding Tag}" Source="{Binding ImageSource}" MouseLeftButtonDown="ToggleFavoriteImage_MouseLeftButtonDown"/> 
            <TextBlock x:Name="ListBoxSName" Width="220" Text="{Binding Name}" Margin="30,0,0,0" FontSize="11" MouseLeftButtonDown="ListBoxSName_MouseLeftButtonDown"/> 
            <Button x:Name="ListBoxSCoyntry" Height="17" Content="{Binding City}" FontSize="11" Click="ListBoxSCity_Click"/> 
            <Button x:Name="ListBoxSCity" Height="17" Content="{Binding Genre}" FontSize="11" Click="ListBoxSGenre_Click"/> 
            <Button x:Name="ListBoxSGenre" Height="17" Content="{Binding Country}" FontSize="11" Click="ListBoxSCountry_Click"/> 
           </DockPanel> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 

        </ListBox> 

我想要做的是有ImageTextBlock停靠左,和所有其它并排停靠右侧。 我试过DockPanel.Dock ="Rigth"所有Buttons但事情变得非常混乱。 任何有想法的人?

回答

4

裹在堆叠面板中的每个视觉组和对接应用于StackPanel中,像这样:

<DockPanel> 
    <StackPanel DockPanel.Dock="Left"> 
     <Image x:Name="ToggleFavoriteImage" Width="15" Height="15" Tag="{Binding Tag}" Source="{Binding ImageSource}" MouseLeftButtonDown="ToggleFavoriteImage_MouseLeftButtonDown"/> 
     <TextBlock x:Name="ListBoxSName" Width="220" Text="{Binding Name}" Margin="30,0,0,0" FontSize="11" MouseLeftButtonDown="ListBoxSName_MouseLeftButtonDown"/> 
    </StackPanel> 
    <StackPanel DockPanel.Dock="Right"> 
     <Button x:Name="ListBoxSCoyntry" Height="17" Content="{Binding City}" FontSize="11" Click="ListBoxSCity_Click"/> 
     <Button x:Name="ListBoxSCity" Height="17" Content="{Binding Genre}" FontSize="11" Click="ListBoxSGenre_Click"/> 
     <Button x:Name="ListBoxSGenre" Height="17" Content="{Binding Country}" FontSize="11" Click="ListBoxSCountry_Click"/> 
    </StackPanel> 
</DockPanel> 
+0

这工作几乎完美。唯一的问题是,即使认为他们已经停靠了,现在他们离开了一个巨大的白色空间。 – oimitro

+0

使用'DockPanel.Dock =“填充”它是其中的一个,因为它将使用剩下的所有可用空间。在这种情况下,'Horizo​​ntalAlignment'的行为 – saamorim

+0

完美的工作。谢谢。我决定不要遵循StackPanel。我是这样的:1st Button:DockPanel.Dock =“Right”2nd Button:DockPanel.Dock =“Right”3nd Button:Horizo​​ntalAlignment =“Right”。和DockPanel中的所有项目。 – oimitro

0

使用一个GridDockPanel不是一个良好的控制。 Grids也有size-sharing,这通常用于项目控件。