0

私はこのテンプレートを持っていますLongListSelector

<local:SearchTemplateSelector.LoadMoreTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
                                    <TextBlock Text="Load more..." FontSize="30" Foreground="White" TextWrapping="Wrap" Grid.Row="0" 
                                               HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,35"/>
                                    <Rectangle Height="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" Fill="White" Grid.Row="1" Opacity="0.3"/>
                                </Grid>
                            </DataTemplate>
                        </local:SearchTemplateSelector.LoadMoreTemplate>

これはLongListSelector

    <Controls:LongListSelector x:Name="searchList" Margin="0,0,0,0"  Background="Black" SelectionChanged="DidPressSelectSearchList" 
                               HorizontalContentAlignment="Stretch" KeyDown="UserPressEnterKeyBoard" Grid.Row="1">
        <Controls:LongListSelector.ItemTemplate>
            <DataTemplate>
                <local:SearchTemplateSelector Content="{Binding}" HorizontalContentAlignment="Stretch">

また、リスト内のこの行を押すと、をDidPressSelectSearchList押したときにのみ呼び出さTextBlockれ、行の別の場所を押してもトリガーされないという問題があります。

それを修正する方法はありますか?

編集私はこれを試してみます:

<local:SearchTemplateSelector Content="{Binding}" HorizontalContentAlignment="Stretch" Background="Transparent">

そして、それはまだ機能しません。

4

2 に答える 2

1

あなたのような問題がありました( LongListSelector error )。

解決方法を考えてみましたが、解決策が見つかりませんでした。問題をより明確に説明するために写真を追加しました。青いボックス (写真上) はタップ イベントが発生したときの領域であり、赤いボックスは、そこをタップしたときに何も起こらない領域です。LongListSelector を使用する代わりに Listbox を使用すると、すべて正常に動作します。

しかし、Silver Solverのアドバイスを試してみたところ、本当にうまくいきました。私は、あなたは単純に間違いを犯したと思います。

要素内のこのプロパティBackground="Transparent"に注意してください。これは一貫して内部に配置されています (コードは以下に配置されています)。<Grid><DataTemplate><toolkit:LongListMultiSelector.ItemTemplate>

<Grid>の要素を<Controls:LongListSelector.ItemTemplate>設定してから、要素にBackground="Transparent"を設定する必要があるため、問題が発生したと思います<Grid><Grid>次に、要素内に好きなものを入れることができます。Tap="Grid_Tap"また、要素にイベントを追加して、要素領域<Grid>内をタップするたびにトリガーされるようにすることもできます。<Grid>

これは私のコードのサンプルです。試してみてください:

<toolkit:LongListMultiSelector                    
                x:Name="LongListMultiSelector" 
                Margin="0,0,0,0"  
                ItemsSource="{Binding}"                     
                SelectionChanged="SelectionChanged"
                IsSelectionEnabledChanged="IsSelectionEnabledChanged"                              
                EnforceIsSelectionEnabled="False" 
                >
                <toolkit:LongListMultiSelector.ItemTemplate>
                    <DataTemplate>                            
                        <Grid Margin="0,0,0,17" 
                              Tap="Grid_Tap"                                       
                              HorizontalAlignment="Stretch" 
                              VerticalAlignment="Stretch"  
                              Background="Transparent">                                     
                            <TextBlock  Text="{Binding Text}"
                                        TextWrapping="NoWrap"
                                        Style="{StaticResource PhoneTextLargeStyle}"                                            
                                        HorizontalAlignment="Left"                                          
                                        />                                        
                        </Grid>                            
                    </DataTemplate> 
                </toolkit:LongListMultiSelector.ItemTemplate>    

PSシルバー ソルバーありがとうございます。申し訳ありませんが、評判が小さいため、評判を高めることができません。

于 2014-01-23T15:35:30.890 に答える
0

ItemTemplate のルート要素に背景が設定されていることを確認してください。そうしないと、クリックが登録されません。

<DataTemplate>
            <local:SearchTemplateSelector Background="Transparent"...

Selector に Background プロパティがない場合は、Grid でラップするだけです。

于 2013-02-18T13:39:10.320 に答える