Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Выровнять button внутри ListBox


Автор: RastaDja 31.8.2011, 14:54
Доброго времени суток уважаемые!
Есть разметка 
Код

<ListBox BorderThickness="1" Grid.Row="0" Name="ResList">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding Path=v}"></TextBlock>
                        <Button Grid.Column="2" HorizontalAlignment="Right" Click="Button_Click" Tag="{Binding}" Content="View ..."></Button>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

хочу нарисовать вот такой ListBox
http://s2.ipicture.ru/
а получаю вот такое
http://s1.ipicture.ru/

как мне описать стиль, чтоб кнопка всегда была справа. Помогите, ато уже всю голову сломал, и ничего не выходит  smile 

Автор: Gvozdin 31.8.2011, 15:44
Тут проблема в том что ListBoxItem занимает не всю щирину.

Сделайте ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" - запретите виртуальное бесконечно пространство по горизонтали.
И задайте стиль для ListBoxItem:

Код

<ListBox.ItemContainerStyle>
    <Style>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>


Пишу по памяти, могут быть неточности.

Автор: RastaDja 31.8.2011, 16:02
Gvozdin, написал такое
Код

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" BorderThickness="1" Grid.Row="0" Name="ResList" IsSynchronizedWithCurrentItem="True">
            <ListBox.ItemTemplate>
               <DataTemplate>
                    <Grid HorizontalAlignment="Stretch">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding Path=v}"></TextBlock>
                        <Button Grid.Column="2" HorizontalAlignment="Right" Click="Button_Click" Tag="{Binding}" Content="View ..."></Button>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBox.ItemContainerStyle>
                <Style>
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>

ругается на <Setter Property="HorizontalContentAlignment" Value="Stretch"/> :
error MC4003: Cannot resolve the Style Property 'HorizontalContentAlignment'. Verify that the owning type is the Style's TargetType, or use Class.Property syntax to specify the Property. Line 48 Position 29.
как правильно сделать, подскажите пожалуйста.

Добавлено через 5 минут и 42 секунды
так
Код

<ListBoxItem HorizontalContentAlignment="Stretch"></ListBoxItem>
тоже не работает

Автор: Rogik 31.8.2011, 19:25
Необходимо для ListBox задать свойство HorizontalContentAlignment="Stretch", а не для ListBoxItem
Код

  <ListBox BorderThickness="1" Grid.Row="0" Name="ResList" HorizontalContentAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding Path=v}"></TextBlock>
                        <Button Grid.Column="2" HorizontalAlignment="Right" Click="Button_Click" Tag="{Binding}" Content="View ..."></Button>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>


Автор: RastaDja 1.9.2011, 08:23
Rogik, 
Gvozdin, спасибо большое. Заработало.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)