0

次のテンプレートを使用する ListBox があります。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="64" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="100" />
    </Grid.ColumnDefinitions>

    <Image Source="{Binding Property3}" Grid.Column="0" HorizontalAlignment="Left" Height="64" Width="64"/> 
    <TextBlock Grid.Column="1" Text="{Binding Property1}"/>
    <TextBlock Grid.Column="2" Text="{Binding Property2}" HorizontalAlignment="Right"/>
</Grid>

私が抱えている問題は、中央の列にあります。中央の列のテキストの長さによって、グリッドの幅が決まります。幅に正確な値を使用せずに、グリッドをページの幅の 100% まで拡張する最良の方法は何ですか? それともこれは不可能ですか?ここからかなりの数の提案を試みました(例:ListBoxにHorizo​​ntalContentAlignmentを設定する)が役に立ちませんでした。

編集:これは問題を強調するための完全なページ、最小限のコードです:

<phone:PhoneApplicationPage
x:Class="FoursquareDemo.SandboxPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="ItemTemplate">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="64" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="100" />
                </Grid.ColumnDefinitions>

                <Image Source="{Binding Property3}" Grid.Column="0" HorizontalAlignment="Left" Height="64" Width="64"/>
                <TextBlock Grid.Column="1" Text="{Binding Property1}"/>
                <TextBlock Grid.Column="2" Text="{Binding Property2}" HorizontalAlignment="Right"/>
            </Grid>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

<ListBox x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Collection}" />

4

2 に答える 2

1

解決策を見つけました:

ListBoxItems は、ListBox の全幅に拡張されません。この場合は、LongListSelector を使用することをお勧めします。やり過ぎのように見えますが、仕事は完了します。

于 2013-02-19T05:06:35.893 に答える
0

問題にアプローチする方法は 2 つあります。

1) グリッドの余白を Margin = "0,0,0,0" に設定します。

これは基本的に、「左、上、右、下」のグリッドのオフセットを 0 に設定します。

2)上記が機能しない場合は、親グリッドを確認してください。そして、親グリッドのマージンを前述と同じに設定します。デザインに合わせてTopとBottomの値を変えればOKです。ただし、グリッドの長さが幅全体を占めるようにしたい場合は、左右の余白の値を 0 に設定してください。

于 2013-02-18T23:38:59.697 に答える