Установка начальной ширины для расширителя или списка - PullRequest
0 голосов
/ 23 декабря 2010

В предыдущем вопросе, который я задал, я хотел иметь возможность перемещать сплиттер сетки, чтобы развернуть расширитель, который содержит список изображений, так что при его расширении размеры изображений меняются в зависимости от доступного пространства. С помощью я смог заставить работать функцию изменения размера, но теперь проблема в том, что при первом запуске программы изображения имеют полный размер вместо размера миниатюры. Есть ли способ установить начальную ширину расширителя, чтобы изображения изначально отображались в виде миниатюр размером около 175 пикселей?

ColumnDefinitions:

<Grid.ColumnDefinitions>
    <ColumnDefinition MinWidth="25" Width="*" />
    <ColumnDefinition MinWidth="5" Width="5" />
    <ColumnDefinition Width="2*" />
    <ColumnDefinition MinWidth="5" Width="5" />
    <ColumnDefinition MinWidth="25" Width="*" />
</Grid.ColumnDefinitions>

0: расширитель
1: Gridsplitter
2: Текстовое поле
3: Gridsplitter
4: Расширитель (текстовое поле с изображениями.)

XAML:

<GridSplitter 
    Name="gridSplitter2"
    Width="10" 
    Margin="0,0,0,0" 
    Grid.Column="3"
    IsEnabled="True" 
    HorizontalAlignment="Center"/>
    <Expander
        Style="{DynamicResource ExpanderStyle}"
        Name="pictureExpander"
        IsExpanded="True"
        Grid.Column="4"
        ExpandDirection="Left"
        Collapsed="pictureExpander_Collapsed"
        Expanded="pictureExpander_Expanded" >
        <ListBox 
            Name="photoList" 
            ItemsSource="{Binding Source={StaticResource PhotoBin}}"
            IsSynchronizedWithCurrentItem="True"
            ScrollViewer.CanContentScroll="False"
            ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Style.Resources>
                        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Yellow" />
                    </Style.Resources>
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="BorderBrush" Value="Black"/>
                            <Setter Property="BorderThickness" Value="5"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListBox.ItemContainerStyle>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Image 
                        Name="thumbnailImage"
                        Source="{Binding FileLocation}"
                        Margin="5"
                        Stretch="UniformToFill"
                        StretchDirection="Both"
                        HorizontalAlignment="Stretch"
                        />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Expander>

1 Ответ

1 голос
/ 23 декабря 2010

Я думаю, вы можете поиграть со своими ColumnDefinitions. Установка ширины для вашего пятого ColumnDefinition даст вам начальную ширину для него

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition Width="175"/>
    </Grid.ColumnDefinitions>
    <!-- Your other Controls.. -->
    <GridSplitter Grid.Column="3" ... />
    <Expander Grid.Column="4" ... />
</Grid>

Обновление

Я не могу воспроизвести вашу проблему. Когда я устанавливаю Width = "175" на пятом ColumnDefinition, он начинается с этой ширины. Загрузил мой пример приложения здесь: http://www.mediafire.com/?kjc9yqgmkq6dbiq

...