WPF, Ширина шаблона данных - PullRequest
       15

WPF, Ширина шаблона данных

3 голосов
/ 07 декабря 2010

У меня есть элементы форматирования шаблона данных в ListBox

<DataTemplate x:Key="ChildViewModelTemplate">
    <Border BorderBrush="#FFDC1C1C" BorderThickness="1" >
        <Grid>
            <TextBlock Text="{Binding Path=DisplayName}"></TextBlock>
            <Image Height="Auto" Margin="0,0,2,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" Width="31" Source="pack://siteoforigin:,,,/rocket.ico"/>
        </Grid>
    </Border>                
</DataTemplate>

Это помещает границу вокруг каждого элемента, простирающуюся до длины текстовой строки, связанной в привязке TextBlock.

Есть ли простой способ, чтобы все элементы имели одинаковую ширину, где ширина равна самому длинному элементу? Что касается бонусных баллов, мне интересно, есть ли способ сделать это для самого длинного видимого элемента и / или самого длинного элемента независимо от того, видим ли он.

Спасибо

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Отслеживание ответа Botz3000. SharedSizeGroup это путь сюда. Это сделает это

<ListBox ...
         Grid.IsSharedSizeScope="True">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" SharedSizeGroup="Col1"/>
                </Grid.ColumnDefinitions>
                <Border BorderBrush="#FFDC1C1C" BorderThickness="1" >
                    <Grid>
                        <TextBlock Text="{Binding Path=DisplayName}"></TextBlock>
                        <Image Height="Auto" Margin="0,0,2,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" Width="31" Source="C:\C1.png"/>
                    </Grid>
                </Border>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
3 голосов
/ 07 декабря 2010

Возможно, вы захотите взглянуть на свойства Grid.IsSharedSizeScope и SharedSizeGroup .
Вот учебник для него:
http://blogs.interknowlogy.com/johnbowen/archive/2007/08/27/21132.aspx

...