0

次のように、新しいWindows Phone8LongListSelectorの簡単なデータテンプレートがあります。

<DataTemplate>
    <StackPanel Orientation="Horizontal" Margin="0,-6,0,-10">
        <CheckBox x:Name="ToDoCheckBox" Margin="0" IsChecked="{Binding ItemIsComplete}" Checked="ToDoCheckBox_Checked"/>
        <TextBlock Text="{Binding ItemName}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeExtraLarge}"/>
    </StackPanel>
</DataTemplate>

テンプレートにはさらにいくつかのアイテムが含まれているため、CheckBoxのcontentプロパティは使用されていません。

これで、SelectionChangedイベントにページナビゲーションが実装されました。問題は、CheckBoxがクリックされた場合でもSelectionChangedが発生することです。以前の質問は正反対の問題を議論しているようです。SelectionChangedを起動したくありません。または、少なくとも、ページでCheckBoxイベントをナビゲートしたくありません。チェックボックスをオンまたはオフにしたイベントが欲しいだけです。どうすればそれを達成できますか?

4

2 に答える 2

0

選択は、ナビゲーションをトリガーするための悪い方法です。それを掘り下げることなく、テンプレート内の他のアイテムがタップされたときにナビゲーションをトリガーすることで、これを回避できます。
例えば

<DataTemplate>
    <StackPanel Orientation="Horizontal" Margin="0,-6,0,-10">
        <CheckBox x:Name="ToDoCheckBox" Margin="0" IsChecked="{Binding ItemIsComplete}" Checked="ToDoCheckBox_Checked"/>
        <TextBlock Text="{Binding ItemName}"
                   TextWrapping="NoWrap"
                   Style="{StaticResource PhoneTextExtraLargeStyle}"
                   FontSize="{StaticResource PhoneFontSizeExtraLarge}"
                   Tap="TriggerNavigationToThisItem"/>
    </StackPanel>
</DataTemplate>

上記はTriggerNavigationToThisItem、ナビゲーションをトリガーするというイベントがあることを前提としています。アイテムにコマンドを追加し、それにバインドしてナビゲーションをトリガーすることもできます。

より複雑なテンプレートがある場合は、それらをコンテナ(のようなGrid)にカプセル化してから、ナビゲーションをトリガーすることができます。

于 2013-01-30T13:02:00.673 に答える
0

選択が変更されたすべてのイベントの元のソースを確認できます。チェックボックスの場合-実行をスキップするだけです。

また。ネイティブの「LongListSelector.Selected」プロパティと選択イベントはまったく使用しないでください。スケーラビリティはまったくありません(たとえば、複数選択の場合)。独自のTapイベント処理を使用して実装します。

于 2013-01-30T15:46:28.147 に答える