0

我对 ListBox 及其元素有一点问题。正如您在我的代码中看到的那样,两个文本块的堆栈面板都设置为 250。这样设置是因为否则文本会在 1 行中展开并且您看不到按钮。显而易见的问题是,将此参数设置为静态,如果分辨率或方向更改不会完全适合屏幕。我想知道是否有办法动态设置这个宽度。

<ListBox x:Name="attractionsListbox" Margin="0,0,-12,0" ItemsSource="{Binding Attractions}" Loaded="attractionsListbox_Loaded">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Tag="{Binding Name}" Tap="AttractionListBoxItem_Tap">
                <Image Height="140" Width="140" Margin="0,5,0,0" Source="{Binding Thumbnail}" MaxWidth="140" MaxHeight="140" Stretch="Fill" />
                <StackPanel Width="250">
                    <TextBlock x:Name="AttractionName" Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextSmallStyle}" FontSize="20" Foreground="Black" FontWeight="Bold" />
                    <TextBlock Text="{Binding ShortDescription}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSmallStyle }" Foreground="Black" />
                </StackPanel>
                <Button Width="80" Height="80" Padding="10,3,10,5" BorderBrush="Black" Click="Add_Todo_Click" Tag="{Binding Name}">
                    <Button.Background>
                        <ImageBrush ImageSource="/SundsvallWP7;component/Images/appbar.add.rest.png"/>
                    </Button.Background>
                </Button>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

(android中有权重,可以给每个控件分配权重,不知道Windows Phone有没有这个)。

非常感谢。

4

1 回答 1

0

DockPanel 可能比 StackPanel 更适合您的方案。把按钮放在右边,把图片放在左边,那么你中间的 StackPanel 内容就会流动填充。

http://www.windowsphonegeek.com/articles/Using-DockPanel-in-WP7

或者,只有两个方向,分辨率不应该改变。您可以使用值转换器将宽度绑定到方向。

于 2012-05-19T18:33:43.917 回答