代码之家  ›  专栏  ›  技术社区  ›  sympatric greg

Silverlight:如何根据用户输入修改列表框项的宽度?

  •  1
  • sympatric greg  · 技术社区  · 16 年前

    控件将根据需要变得更宽或更窄,列表框项除外。不管HorizontalContentAlignment设置为“拉伸”,列表框项水平增长以适应其内容。

    我应该可以设置属性吗ListBox.ItemContainerStyle告诉它用父列表框加宽/缩小?此列表框中不需要水平滚动。

    或者,是否有一种方法可以指定ItemTemplate的StackPanel宽度,以便在运行时进行修改?我已经将其绑定到StaticResource,但不知道是否应该更改资源值。我可以创建并绑定到UserControl本身的DependencyProperty吗?我还没有在xaml中确定它的语法。

    代码:

    <UserControl x:Class="TheAssembly.GraphicViewer"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:userControls="clr-namespace:TheAssembly"
    xmlns:core="clr-namespace:System;assembly=mscorlib">
    <UserControl.Resources>
        <userControls:DictionaryAttributeConverter x:Name="MyDictionaryAttributeConverter" />
        <core:Double x:Key="ListItemWidth">155</core:Double>       
    </UserControl.Resources> 
    <Grid x:Name="LayoutRoot"  Width="175" >
        <Border Style="{StaticResource DraggableWindowBorder}">
            <StackPanel x:Name="RootStackPanel" Orientation="Vertical" HorizontalAlignment="Stretch">
                <Border Background="Black" HorizontalAlignment="Stretch" Margin="0">  
                    <TextBlock x:Name="Header" Foreground="White" FontSize="14" TextWrapping="Wrap" Margin="2,0,2,0" 
                               Height="25" HorizontalAlignment="Left"
                               Text="{Binding HeaderText}"/>
                </Border>
                <TextBlock x:Name="Title"  Style="{StaticResource GraphicViewerDetail}" FontSize="12" FontWeight="Medium" TextWrapping="Wrap" 
                   Text="{Binding Title}" Margin="3,0,0,0" HorizontalAlignment="Left"/>
                <ListBox x:Name="AttributeListBox" ItemsSource="{Binding Attributes}" BorderBrush="Red" HorizontalContentAlignment="Stretch"
                     Foreground="AntiqueWhite" Background="Transparent" IsEnabled="False" HorizontalAlignment="Stretch"  
                         ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="ListBoxItem">
                            <Setter Property="HorizontalAlignment" Value="Stretch"/>
                            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                            <Setter Property="Margin" Value="0,-2,0,0"/>
                        </Style>
                    </ListBox.ItemContainerStyle>
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel x:Name="ListBoxItemStackPanel" HorizontalAlignment="Stretch" Orientation="Vertical" >
                                <TextBlock FontSize="10" Text="{Binding Key}" Foreground="White" FontWeight="Bold"  HorizontalAlignment="Stretch"
                                      Margin="2,0,0,0" TextWrapping="Wrap"/>
                                <TextBlock FontSize="10"  Text="{Binding Value}" Foreground="White" Margin="6,-2,0,0" TextWrapping="Wrap" 
                                           HorizontalAlignment="Stretch" />
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </Border>
    </Grid>
    

    0 回复  |  直到 16 年前