2013-03-19 3 views
4

У меня есть этот код, на котором я использую DockPanel на Button.Content. Однако это не позволяет мне выровнять последнее изображение (маленькая стрелка).WPF Dockpanel не будет выравниваться правильно

<Button Height="70" 
        HorizontalContentAlignment="Left"> 
       <Button.Content> 
       <DockPanel LastChildFill="False"> 
        <Image DockPanel.Dock="Left" 
        Height="50" 
         Width="50" 
         Source="{StaticResource Placeholder}" 
         Stretch="UniformToFill" 
         Margin="5" /> 
        <TextBlock DockPanel.Dock="Left" 
          Text="Dummy text" 
          VerticalAlignment="Center" 
          Margin="5" /> 
        <Image DockPanel.Dock="Right" 
         Height="24" 
         Width="24" 
         Source="{StaticResource Right_Arrow_24}" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Right" 
         Stretch="UniformToFill" 
         Margin="5" /> 
       </DockPanel> 
       </Button.Content> 
      </Button> 

Теперь она дает мне это:

DockPanel

Так правая маленькая стрелка должна быть размещена на справа от кнопки, а не только после TextBlock. Я нашел некоторые подобные проблемы, и похоже, что я сделал это правильно, но почему-то это не так.

Что я здесь делаю неправильно?

+0

Сделать горизонтальный конкатентный растяжку Stretch – dowhilefor

ответ

6

Попробуйте установить HorizontalContentAlignment вашей кнопки на "Stretch". В противном случае ваш DockPanel будет использовать размер по своему содержанию, а затем выровнять по левому краю. Вы можете подтвердить это поведение, используя различные длины текста для вашего TextBlock s

+0

Ahh damn ... Так просто и так глупо от меня :) Thx! – PitAttack76

1

Попробуйте установить

HorizontalContentAlignment = "Stretch"

На кнопке.

4

Вам просто нужно добавить дополнительный дочерний элемент в DockPanel (скажем, пустой холст) без атрибута DockPanel.Dock, так что ему будет присвоено все оставшееся пространство. В общем, DockPanel работает только тогда, когда его последний ребенок не имеет ограничений на док-станцию ​​

+0

Хотя это работает, мне кажется, это больше похоже на хак. Добавление дополнительного элемента пользовательского интерфейса, только ради получения желаемого макета. Мне это не нравится. Тем не менее, я проголосовал, потому что решил эту проблему и показал внутреннее поведение XAML. –