E.Handled无法使用ShowDialog中的TouchEventArgs

时间:2015-12-07 17:35:10

标签: c# wpf xaml

当使用ShowDialog()启动窗口时,我在使用Touch停止隧道时遇到了一些麻烦。 我的问题是:当我触摸窗口中的按钮时,clic(或触摸)继续到MainWindow并打开一个新的窗口,如果后面有另一个按钮。

我尝试使用

e.Handle = true;

要停止隧道,如果我用我的鼠标clic,它会起作用,但如果我触摸我的屏幕,它就不会。

以下是代码示例:(此示例窗口只有一个按钮'确定'。)

C#

public partial class MessageWindow : Window
{
.... other code ...
public static MessageBoxResult Show(string caption, MessageTypes type, MessageBoxButton buttons)
    {
        MessageWindow wnd = new MessageWindow();
        wnd.Owner = Application.Current.MainWindow;
        wnd.Title = "Error Message";
        wnd.IsError = true;
        wnd.Message = caption;
        wnd.IsOk = true;
        wnd.ShowDialog();

        return wnd.Result;
    }

    private void OnOK()
    {
        Result = MessageBoxResult.OK;
        this.DialogResult = true;
    }

    private void _btOK_Click(object sender, RoutedEventArgs e)
    {
        e.Handled = true;
        OnOK();
    }

    private void _btOKonly_TouchDown(object sender, TouchEventArgs e)
    {
        e.Handled = true;
        OnOK();   
    }
.... other code again ....

}

XAML                        

<Grid x:Name="LayoutRoot" Background="White" Width="640" Height="480">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Border Background="Black" Padding="20,10">
        <TextBlock TextWrapping="Wrap" Text="{Binding Title, ElementName=Window}"/>
    </Border>
    <Button x:Name="_btOKonly" Content="OK" Click="_btOK_Click" TouchDown="_btOK_Click"Grid.Row="2"/>
    <StackPanel>
        < ... text of error ...>
    </StackPanel>
</Grid>

以下是启动我的窗口的代码:

C#

MessageWindow.Show(" This is a sample of error message", MessageWindow.MessageTypes.Error);

感谢EveryOne可以帮助我:)

1 个答案:

答案 0 :(得分:0)

最后我找到了答案。 事实上,我必须捕获“Clic”而不是像这样的“触摸”动作

<Button x:Name="_btOKonly" Content="OK" Click="_btOK_Click" Grid.Row="2"/>

而“Clic”就像它一样处理。