Я отображаю модальное диалоговое окно, когда пользователь дважды нажимает внутри TextBlock. Это бэкдор к скрытой панели настроек. TextBlock содержится во всплывающем окне. Я обнаружил, что всегда необходимо нажать / коснуться один раз, прежде чем какая-либо из кнопок в диалоговом окне что-либо сделает. Вид раздражает. Первоначально использовались MouseLeftButtonDown и ClickCount == 2 в TextBlock, но также пробовали DoubleClickEvent для Label и их версий Preview .... Ничто из того, что я пробовал, не решает эту проблему.
<TextBlock Foreground="Black" FontSize="16" Grid.ColumnSpan="4" HorizontalAlignment="Center" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown" VerticalAlignment="Center" Padding="0,10,0,10">
<Run Text="{x:Static languages:Strings.SoftwareVersion}"/>
<Run Text="{Binding SoftwareBuild}"/>
<Run Text=" "/>
<Run Text="{x:Static languages:Strings.FirmwareVersion}"/>
<Run Text="{Binding FirmwareBuild}"/>
</TextBlock>
private void TextBlock_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
try
{
if (e.ClickCount == 2)
{
var sw = new SettingsWindow();
sw.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
sw.DataContext = this.DataContext;
sw.ShowDialog();
}
}
catch (Exception ex)
{
ex.HandleException();
}
}
Я внес исправление в заголовок, поскольку проблема только в поведении касанием / касанием; первый щелчок мыши проходит только при первом касании.
Добавлен дополнительный код для окна настроек в соответствии с запросом: -
<Window x:Class="XXXXXXX.UserInterface.Views.Miscellaneous.SettingsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="SettingsWindow" Height="150" Width="200">
<Grid>
<Button Content="Click Me" Click="Button_Click" VerticalAlignment="Center" HorizontalAlignment="Center" Height="48" Margin="50,30,37,41" Width="105" />
</Grid>
</Window>
public partial class SettingsWindow : Window
{
public SettingsWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
(sender as Button).Background = new SolidColorBrush(Colors.Red);
(sender as Button).Content = "WAS CLICKED";
}
}
Я попытался установить фокус в загрузке и активировать событие Диалог безрезультатный. Даже попытался вызвать событие MouseClick с помощью RaiseEvent.
Та же проблема, если я считаю только 1 щелчок, но одним щелчком проблема исчезнет, если я посчитаю события MouseButtonUp не MouseButtonDown, но тогда я потеряю опцию ClickCount == 2 который не работает вообще. Где-то событие MouseButtonUp теряется.
Так что я собираюсь справиться со своим двойным щелчком, чтобы заставить это работать ...
, но приветствуются предложения о том, почему это происходит.
Джерри