1

Windows Phone 8 と XAML を理解するために、簡単なテスト プロジェクトを開始しました。ピボット ビューに、データ エントリをフラット リストに表示する longlistselector があります。ユーザーがリストから項目を削除したい場合、アプリケーションバーの「選択」ボタンをタップすると、リストの各行の先頭にチェックボックスが表示されます。これを行うには、「選択」アプリケーション バー ボタンのタップ イベントを処理し、longlistselectorのItemtemplateandを必要なチェックボックスを含むデータ テンプレートに設定します。ListHeaderTemplate私に。

ただし、私の問題は、チェックボックスを含む DataTemplate が表示されると、このスクリーンショットに示すように、チェックボックスが切り取られることです。

ここに画像の説明を入力

チェックボックスを含む DataTemplate の XAML は次のとおりです。

    <DataTemplate x:Key="ExpensesEditListTemplate">
        <Grid HorizontalAlignment="Stretch" Width="420">
            <Grid.RowDefinitions>
                <RowDefinition Height="48" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="48" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <CheckBox 
                IsChecked="False" 
                Grid.Column="0" VerticalAlignment="Top" Margin="-4,0,0,0" HorizontalContentAlignment="Left"
                />
            <TextBlock 
                Text="{Binding Date, StringFormat=d}" 
                FontSize="{StaticResource PhoneFontSizeNormal}" 
                Grid.Column="1" Grid.ColumnSpan="1" 
                VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
            <TextBlock 
                Text="{Binding ExpenseCategory}" 
                FontSize="{StaticResource PhoneFontSizeNormal}" 
                Grid.Column="2" Grid.ColumnSpan="1"
                VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
            <TextBlock 
                Text="{Binding Amount,StringFormat=\{0:N2\}}"                    
                FontSize="{StaticResource PhoneFontSizeNormal}"
                Grid.Column="3" Grid.ColumnSpan="1"
                VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
            <TextBlock 
                Text="{Binding PaymentCategory}" 
                FontSize="{StaticResource PhoneFontSizeNormal}" 
                Grid.Column="4" Grid.ColumnSpan="1" 
                VerticalAlignment="Top"  Margin="0, 4, 0, 0"/>
        </Grid>
    </DataTemplate>

行の高さと列を明示的に設定しようとしましたが、以下に示すように、「80」のような特に大きな値を使用する場合にのみ、チェックボックスを表示できます (ただし、画面スペースが大量に無駄になります)。

ここに画像の説明を入力

チェックボックスの幅と高さを明示的に小さい値 (20x20 など) に設定すると、チェックボックスがまったく表示されなくなります。明らかに、私は XAML に関する基本的な何かを見逃しているに違いありませんが、それを理解することはできません!

4

1 に答える 1

0

どうやら、「正しい」マージン値を設定することの問題です。コードをページに直接貼り付け、<Grid></Grid>グリッドを視覚的に編集してコントロールを正しく配置することになりました。結果の XAML コードは次のとおりです。

<DataTemplate x:Key="ExpensesEditListTemplate">
    <Grid HorizontalAlignment="Stretch" Width="420">
        <Grid.RowDefinitions>
            <RowDefinition Height="64" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="48" />
            <ColumnDefinition Width="90" />
            <ColumnDefinition Width="90" />
            <ColumnDefinition Width="90" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <CheckBox 
            IsChecked="{Binding Ischecked}" 
            Grid.Column="0" VerticalAlignment="Top" Margin="-8,-18,0,0" HorizontalContentAlignment="Left"
            Checked="CheckBox_Checked" Unchecked="CheckBox_Checked"
            />
        <TextBlock 
            Text="{Binding Date, StringFormat=d}" 
            FontSize="{StaticResource PhoneFontSizeNormal}" 
            Grid.Column="1" Grid.ColumnSpan="1" 
            VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
        <TextBlock 
            Text="{Binding ExpenseCategory}" 
            FontSize="{StaticResource PhoneFontSizeNormal}" 
            Grid.Column="2" Grid.ColumnSpan="1"
            VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
        <TextBlock 
            Text="{Binding Amount,StringFormat=\{0:N2\}}"                    
            FontSize="{StaticResource PhoneFontSizeNormal}"
            Grid.Column="3" Grid.ColumnSpan="1"
            VerticalAlignment="Top" Margin="0, 4, 0, 0"/>
        <TextBlock 
            Text="{Binding PaymentCategory}" 
            FontSize="{StaticResource PhoneFontSizeNormal}" 
            Grid.Column="4" Grid.ColumnSpan="1" 
            VerticalAlignment="Top"  Margin="0, 4, 0, 0"/>
    </Grid>
</DataTemplate>

しかし、これは私にとっては謎のままです - どのようにしてMargin="-8,-18,0,0"ターンアップがチェックボックスを揃えるのに適切な値になったのでしょうか? 明示的に設定されたチェックボックスのサイズが無視されるのはなぜですか? 私が気付いていないデフォルト値がいくつかあると思います。

于 2013-06-12T20:58:53.143 に答える