当使用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可以帮助我:)
答案 0 :(得分:0)
最后我找到了答案。 事实上,我必须捕获“Clic”而不是像这样的“触摸”动作
<Button x:Name="_btOKonly" Content="OK" Click="_btOK_Click" Grid.Row="2"/>
而“Clic”就像它一样处理。