locked
How to cancel the mouse messages RRS feed

  • 问题

  • I‘am doing a project about drop-down list , there is a title named header, click on the header and then comes a popup drop-down list, there is a tap function handled by the header, we called tap_header  here, in the popup list items there is another tap function, we called tap_item, click the item in the list,and the tap_item function is handled, then the tap_header function is handled,too, I want to cancel the mouse messages after tap_item function was handled, and the header can no longer receive the mouse message, thus no longer conduct tap_header function,how to achieve it?

      private void tap_header(object sender, System.Windows.Input.GestureEventArgs e)
            {
            }

    private void tap_item(object sender, System.Windows.Input.GestureEventArgs e)
            {

    //Here execute the content  I want , and there throw mouse message,and no longer be handled.
            }


    • 已编辑 Edward_Nuo 2011年12月6日 14:08 英文更普遍
    2011年12月5日 8:35

答案

  • 你好,

    根据你的描述,你只要在tap_item里最后将这个鼠标事件设为“已处理”就行了,如下所示:

     <toolkit:ExpanderView Header="Expander Header" x:Name="expander" Tap="expander_Tap" IsExpanded="True">
                    <toolkit:ExpanderView.Items>
                        <TextBlock FontSize="40" Text="Expanded Content one" Tap="TextBlock_Tap"/>
                        <TextBlock FontSize="40" Text="Expanded Content two"/>
                    </toolkit:ExpanderView.Items>
                </toolkit:ExpanderView>
     private void expander_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
               
            }
     
            private void TextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
                MessageBox.Show("hello");
                e.Handled = true;
            }
    • 已建议为答案 XuesongGao 2011年12月6日 8:34
    • 已标记为答案 Edward_Nuo 2011年12月6日 13:32
    2011年12月6日 8:33

全部回复

  • 你好,

    根据你的描述,你只要在tap_item里最后将这个鼠标事件设为“已处理”就行了,如下所示:

     <toolkit:ExpanderView Header="Expander Header" x:Name="expander" Tap="expander_Tap" IsExpanded="True">
                    <toolkit:ExpanderView.Items>
                        <TextBlock FontSize="40" Text="Expanded Content one" Tap="TextBlock_Tap"/>
                        <TextBlock FontSize="40" Text="Expanded Content two"/>
                    </toolkit:ExpanderView.Items>
                </toolkit:ExpanderView>
     private void expander_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
               
            }
     
            private void TextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
                MessageBox.Show("hello");
                e.Handled = true;
            }
    • 已建议为答案 XuesongGao 2011年12月6日 8:34
    • 已标记为答案 Edward_Nuo 2011年12月6日 13:32
    2011年12月6日 8:33
  • 你好,

    根据你的描述,你只要在tap_item里最后将这个鼠标事件设为“已处理”就行了,如下所示:

     <toolkit:ExpanderView Header="Expander Header" x:Name="expander" Tap="expander_Tap" IsExpanded="True">
                    <toolkit:ExpanderView.Items>
                        <TextBlock FontSize="40" Text="Expanded Content one" Tap="TextBlock_Tap"/>
                        <TextBlock FontSize="40" Text="Expanded Content two"/>
                    </toolkit:ExpanderView.Items>
                </toolkit:ExpanderView>
     private void expander_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
               
            }
     
            private void TextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
                MessageBox.Show("hello");
                e.Handled = true;
            }
    嗯,呵呵,就差这么一行代码,谢谢雪松和haixia xie的帮助。。。。谢啦
    2011年12月6日 13:33