1

私はいくつかのデータにバインドされた ListBox を持っています。すべて ItemTemplate が設定されています。ListBox 領域の任意の場所を押して、このリストから PointerPressed イベントを発生させたいのですが (何らかの目的で必要なだけです)、明らかに項目の選択はそれを防ぐために、(私はコマンドを使用しています)これが私のコードです

<ScrollViewer x:Name="sv"
              x:FieldModifier="public"
              VerticalScrollBarVisibility="Visible"
              VerticalScrollMode="Enabled"
              HorizontalScrollBarVisibility="Disabled"
              HorizontalScrollMode="Disabled">
  <ListBox x:Name="lb"
           ItemsSource="{Binding Path=Tweets}">
    <WinRTBehaviors:Interaction.Behaviors>
      <Win8LnBehaviors:EventToCommandBehavior Event="PointerPressed"
                                              Command="svPointerPressed"
                                              PassEventArgsToCommand="True" />
    </WinRTBehaviors:Interaction.Behaviors>
    <ListBox.ItemTemplate>
      <DataTemplate>
        <Grid Height="65">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="65"></ColumnDefinition>
            <ColumnDefinition Width="2*"></ColumnDefinition>
            <ColumnDefinition Width="3*"></ColumnDefinition>
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="2*"></RowDefinition>
          </Grid.RowDefinitions>
          <Image x:Name="Img_ProfilePicture"
                 Grid.Row="0"
                 Grid.Column="0"
                 Grid.RowSpan="2"
                 Stretch="Fill"
                 Source="{Binding ProfilePictureSource}"
                 Margin="2">
          </Image>
          <TextBlock x:Name="Tb_ProfileName"
                     Grid.Row="0"
                     Grid.Column="1"
                     Text="{Binding UserName}"
                     Margin="5,0,0,0"
                     FontFamily="Segoe UI Mono"
                     FontSize="12"
                     FontWeight="Bold" />
          <TextBlock x:Name="Tb_FeedTime"
                     Grid.Row="0"
                     Grid.Column="2"
                     Text="{Binding StatusDateTime}"
                     Margin="5,0,0,0"
                     FontFamily="Segoe UI Light"
                     FontSize="10" />
          <TextBlock x:Name="Tb_FeedData"
                     Grid.Row="1"
                     Grid.Column="1"
                     Grid.ColumnSpan="2"
                     Text="{Binding Status}"
                     Margin="10,0,0,0"
                     FontFamily="Wasco Sans"
                     TextWrapping="Wrap">
          </TextBlock>
        </Grid>
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</ScrollViewer>

背後にあるコード:

public RelayCommand<RoutedEventArgs> svPointerPressed
{
   get
   {
     return new RelayCommand<RoutedEventArgs>((routedEventArgs) =>
     {
       _dispatcher = Window.Current.Dispatcher;
         _dispatcher.RunAsync(CoreDispatcherPriority.High, ()  =>
        {
           MessageDialog m = new MessageDialog("Tapped !");
           m.ShowAsync();
        });
      });
    }
     private set{}
 }

これらの TextBoxes のようなコンポーネントの 1 つから PointerPressed イベントを発生させようとしましたが、まだ発生していません。

私はとても感謝しています、thx

4

1 に答える 1

1

私は行って、この時点であきらめます。ScrollViewer はポインター イベントを除外するため、別の設計を見つけたほうがよいでしょう。

于 2013-01-23T06:56:16.720 に答える