0

デザイン コントロールを向上させるために、独自のチェック ボックス ContentControl を作成しました。

シナリオは次のようになります。

カスタムのテンプレート化されたリスト アイテムを含むリストボックスを取得しました。これには、テキスト アイテムとカスタム チェックボックスがあります。

望まれる動作:

  • リスト項目をクリックすると、ページがその項目の詳細ビューに変わります。
  • チェックボックスをクリックすると、チェックマークがトグルされるだけで、ページの変更はトリガーされません。

実際の動作:

私のチェックボックスをクリックすると、ページ変更イベントがまだ発生していると思います。

私がそれをどのように実装したか:

私のチェックボックスには、長方形とアイコンを保持するグリッドがあります。IsChecked ステータスを切り替えるために、Tap イベントを Grid にバインドしました。(Grid オブジェクトにはクリック イベントがありません)。

クリックイベントを使用していないためですか?もしそうなら、私の ContentControl はどのインターフェースを実装する必要がありますか? または、デフォルトのチェックボックス (ボタン?) コントロールはどのようにそれを管理するのでしょうか?

ご協力いただきありがとうございます。

4

1 に答える 1

1

デザインコントロールを改善するために、独自のチェックボックスContentControlを作成しました

どうしても独自の CheckBox を作成する必要がある場合は、コントロールが ToggleButton を拡張する必要があります。これにより、必要な動作が得られます。標準のチェックボックスが機能しない場合は、本当に驚かれることでしょう。チェックボックスのスタイルを変更して、好きなように変更したり、好きなように変更したりできます。私はあなたがやりたいと思っていることを正確にやっています、そしてそれはうまくいきます. ItemTemplate内でチェックボックスを使用しますListBox。チェックボックスのスタイルを変更して、通常のチェックボックスとは異なる外観にしました。これが私のListBoxのサンプルです

<ListBox ItemsSource="{Binding Items}"
         SelectionChanged="Stations_SelectionChanged"
         toolkit:TiltEffect.IsTiltEnabled="True"
         SelectionMode="Single">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid Margin="0,0,0,17">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="48"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
                <CheckBox IsChecked="{Binding YesOrNo, Mode=TwoWay}" Width="48"
                          Style="{StaticResource MinimalCheckBoxStyle}"/>
                <TextBlock Text="{Binding Name}" VerticalAlignment="Center"
                   Style="{StaticResource PhoneTextExtraLargeStyle}"
                           Grid.Column="1"/>
                <TextBlock Text="{Binding OtherProperty}"
                           Style="{StaticResource PhoneTextSubtleStyle}"
                           Grid.Column="1" Grid.Row="1"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
于 2012-06-25T03:25:20.440 に答える