1

これは Wpf アプリケーションで、6 つのイメージを作成しました。各画像をクリックすると、ページが表示されます。Xaml コードはこれに似ています。

 <Controls:ReflectionControl Grid.Row="2">
            <ItemsControl ItemsSource="{Binding Path=DashBoardApps}" VerticalAlignment="Bottom" HorizontalAlignment="Center">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Controls:FishEyeControl />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical">
                            <TextBlock x:Name="txtAppName" Text="{Binding Path=ApplicationName}" TextAlignment="Center" Visibility="Hidden" FontSize="7px" Foreground="#eff7ff" />
                            <Image Source="{Binding Path=ApplicationImage}" Height="32" Width="32" MouseLeftButtonDown="Image_MouseLeftButtonDown_1"/>
                        </StackPanel>
                        <DataTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="txtAppName" Property="Visibility" Value="Visible" />
                            </Trigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Controls:ReflectionControl>

イベントを関連付けました

MouseLeftButtonDown

Image_MouseLeftButtonDown_1

cs コード:

 private void Image_MouseLeftButtonDown_1(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {

            UserControl2 uc2 = new UserControl2();
            pageTransitionControl.ShowPage(uc2);
            canvas1.Visibility = System.Windows.Visibility.Hidden;
            //canvas2.Visibility = System.Windows.Visibility.Visible;
            canvas3.Visibility = System.Windows.Visibility.Hidden;

    }

各イベントのソース (イベントが生成された画像) を特定し、上記のコードと同様のコードを割り当てたいと考えています。どうすればいいのですか?

4

3 に答える 3

3

イベント ハンドラーでは、senderはイベントの発生元のオブジェクトです。

private void Image_MouseLeftButtonDown_1(object sender, ...

あなたの場合、それをキャストする必要がImageあり、その後、オリジンが得られます。

于 2012-08-10T11:25:24.693 に答える
1

コールバック ( ) の最初のパラメーターは、senderクリックされている画像への参照です。tryキャストする必要があります。

于 2012-08-10T11:25:33.560 に答える
0

全部で6枚の画像があります。ItemsControlを使用しているので、どの画像がイベントを正確にトリガーしたのかわかりません。

画像のInputbindingと組み合わせてコマンドを使用し、コマンドパラメータにデータコンテキストを渡します。

                <Image>
                <Image.InputBindings>
                    <MouseBinding Gesture="LeftClick" Command="{Binding MyCommand}" CommandParameter="{Binding}"/>
                </Image.InputBindings>
            </Image>

commandparamterとして、itemscontrolにアイテムがあります

于 2012-08-10T13:38:43.367 に答える