Как установить два выравнивания в обертке - PullRequest
2 голосов
/ 09 июля 2011

Как мне получить обертку, как на картинках ниже? Две кнопки <> и текстовый блок выравниваются по левому краю, а текстовое поле - по правому краю, когда я изменяю ширину окон, текстовое поле автоматически переносится на новую строку.

1 Ответ

2 голосов
/ 09 июля 2011

Вот быстрый и грязный способ сделать это.

    <WrapPanel Orientation="Horizontal" SizeChanged="WrapPanel_SizeChanged">
        <TextBlock x:Name="DateTextBlock" TextWrapping="Wrap" MinWidth="280"><Run Text="July 03-09, 2011"/></TextBlock>
        <TextBox x:Name="SearchTextBox" Width="250"  HorizontalAlignment="Right" />
    </WrapPanel>

Затем в вашем обработчике WrapPanel_SizeChanged вы просто делаете DataTextBlock максимально широким - шириной панели меньше ширины текстового поля поиска.

    private void WrapPanel_SizeChanged(object sender, System.Windows.SizeChangedEventArgs e)
    {
        var panel = (WrapPanel)sender;

        var maxWidth = panel.ActualWidth - SearchTextBox.ActualWidth;
        DateTextBlock.Width = maxWidth;
    }
...