0

telrik カバーフローがあり、タイルのタイプはユーザー コントロールである InfoPageView です。親でイベントをトリガーしたい InfoPageView ユーザー コントロール内にボタンがあります。この投稿でソリューションを実装してみました: Silverlight の UserControl 内のボタンの Click イベントを公開しますが、親クラスで子イベントを取得できません。これを行う別の方法はありますか?

<telerikNavigation:RadCoverFlow x:Name="CoverFlow" Grid.Row="0" OffsetY="0" ItemsSource="{Binding Covers}" HorizontalAlignment="Center"
                DistanceBetweenItems="75" DistanceFromSelectedItem="25"  IsReflectionEnabled="False" ItemScale="0.5"  Margin="0,0,0,0" Width="785" Height="486">
                <telerikNavigation:RadCoverFlow.ItemTemplate>
                    <DataTemplate>
                        <local:InfoPageView Name="Custinfopage" Width="390" Height="390" />
                    </DataTemplate>
                </telerikNavigation:RadCoverFlow.ItemTemplate>
            </telerikNavigation:RadCoverFlow>
4

2 に答える 2

1

コードビハインド .cs ファイルを使用して、メイン ページの InfoPage ユーザー コントロールをキャッチできませんでした。だから私はxamlにイベントを注入しました:

<local:InfoPageView Name="Custinfopage" Width="390" Height="390" OnButtonClick="Button_click_event" />

メインの .CS ファイル:

void Button_click_event(object sender, RoutedEventArgs e)
{

        // Code
}

ユーザー コントロールで:

public event EventHandler<RoutedEventArgs> OnButtonClick;

    public void Button_Click(object sender, RoutedEventArgs e)
            {

                if (OnButtonClick!= null){
                        OnButtonClick(sender, e);
                }

            }
于 2013-02-11T05:05:36.503 に答える
1

内部ビューからイベントをバブルアップさせることに固執する場合は、ルーティング イベントに依存する必要があります。ボタンは LeftMouseButtonDown イベントを処理済みとしてマークします。つまり、単純なイベント ハンドラーを使用することはできません。ただし、できることは、処理されたイベントのリスナーを設定することです。

イベントが目的のボタンから発生したことを確認する必要があります。おそらく、そのボタンでタグを使用するだけで十分です。

public MyOuterPage()
{
    InitializeComponent();
    this.AddHandler(UIElement.MouseLeftButtonDownEvent, new System.Windows.Input.MouseButtonEventHandler(MyMouseLeftButtonDownEventHandler), true);
}

void MyMouseLeftButtonDownEventHandler(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    var button = e.OriginalSource as Button;
    if (button.Tag == "MyButton")
    {
        // do something with the event here
    }
}
于 2013-02-09T14:35:03.590 に答える