设置扩展器或列表框的初始宽度

时间:2010-12-23 00:25:42

标签: c# wpf xaml listbox expander

在我之前提出的一个问题中,我希望能够移动gridsplitter来扩展包含图像列表框的扩展器,这样当它扩展时,图像会根据可用空间的大小调整大小。在帮助下我能够调整大小功能,但现在的问题是,当程序最初启动时,图像是完整大小而不是缩略图大小。有没有办法设置扩展器的初始宽度,以便图像最初显示为大约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 个答案:

答案 0 :(得分: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