0

在我问过的上一个问题中,我希望能够移动 gridsplitter 以展开包含图像列表框的扩展器,这样当它展开时,图像会根据可用空间量调整大小。在帮助下,我能够使调整大小功能正常工作,但现在的问题是,当程序最初启动时,图像是全尺寸而不是缩略图大小。有没有办法设置扩展器的初始宽度,以便图像最初显示为大约 175 像素的缩略图?

列定义:

<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>
4

1 回答 1

1

我认为您可以使用 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>

更新

我无法重现您的问题。当我在第五个 ColumnDefinition 上设置 Width="175" 时,它以这个宽度开始。在这里上传了我的示例应用程序:http ://www.mediafire.com/?kjc9yqgmkq6dbiq

于 2010-12-23T01:54:33.980 回答