Я недавно начал перемещать элементы управления в DLL. Эти элементы управления обычно выглядят примерно так:События UserControl очень медленные
<UserControl x:Class="DialogBase.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<Button Content="OK" Click="OkButton_Click"/>
</Grid>
</UserControl>
Я хочу использовать каждую кнопку в элементе управления, как в стандартном элементе управления. Например, когда кто-то использует элемент управления выше, он должен быть в состоянии обрабатывать событие щелчка в собственном методе, как это:
<lib:UserControl1
OkButtonClick="MyCostomClickMethod"
/>
Я обычно работают на жидком достижения этой цели, как это: (файл кода контроля пользователя)
public static RoutedEvent OkButtonClickEvent = EventManager.RegisterRoutedEvent("OkButtonClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(UserControl1));
public event RoutedEventHandler OkButtonClick
{
add
{
AddHandler(OkButtonClickEvent, value);
}
remove
{
RemoveHandler(OkButtonClickEvent, value);
}
}
private void OkButton_Click(object sender, RoutedEventArgs e)
{
RaiseEvent(new RoutedEventArgs(OkButtonClickEvent));
}
Это работает отлично, но очень медленно. Задержка между щелчком и результирующим действием может достигать секунды. Может ли кто-нибудь сказать мне, есть ли более быстрый или каким-либо образом лучший способ сделать это?
Вы пробовали просто добавить обработчик событий во время разработки? – Botonomous
Выполняете ли вы какие-либо задачи с интенсивным использованием процессора в своих обработчиках? –
Нет, они близки к пустым, я просто добавил к ним сообщение или консольный вывод. – peer