Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
WPF Listbox стиль с кнопкой
У меня есть ListBox, который имеет стиль, определенный для ListBoxItems. Внутри этого стиля у меня есть несколько ярлыков и кнопка. С помощью этой кнопки я хочу определить событие щелчка, которое может быть обработано на моей странице (или любой странице, которая использует этот стиль). Как создать обработчик событий на странице WPF для обработки события из стиля ListBoxItems?
Вот мой стиль (только затронутый код):
<Style x:Key="UsersTimeOffList" TargetType="{x:Type ListBoxItem}">
...
<Grid>
<Button x:Name="btnRemove" Content="Remove" Margin="0,10,40,0" Click="btnRemove_Click" />
</Grid>
</Style>
Спасибо!
Взгляните на RoutedCommand s.
Определите свою команду в myclass где-нибудь следующим образом:
public static readonly RoutedCommand Login = new RoutedCommand();
Теперь определите свою кнопку с помощью этой команды:
<Button Command="{x:Static myclass.Login}" />
Вы можете использовать CommandParameter для получения дополнительной информации..
Теперь последнее, но не менее важное, начните слушать свою команду:
В конструкторе класса, который вы хотите сделать что-то приятное, вы размещаете:
CommandBindings.Add(new CommandBinding(myclass.Login, ExecuteLogin));
или в XAML г.:
<UserControl.CommandBindings>
<CommandBinding Command="{x:Static myclass.Login}" Executed="ExecuteLogin" />
</UserControl.CommandBindings>
И вы реализуете делегат потребности CommandBinding:
private void ExecuteLogin(object sender, ExecutedRoutedEventArgs e)
{
//Your code goes here... e has your parameter!
}
Вы можете начать слушать эту команду везде в вашем визуальном дереве!
Надеюсь, это поможет
PS вы также можете определить CommandBinding с помощью делегата CanExecute, который даже отключит вашу команду, если CanExecute скажет это :)
PPS вот еще один пример: RoutedCommands в WPF
Как написал Арктур, RoutedCommands-отличный способ достичь этого. Однако, если в вашем DataTemplate есть только одна кнопка, то это может быть немного проще:
На самом деле вы можете обрабатывать событие щелчка любой кнопки с хоста ListBox, как это:
<ListBox Button.Click="removeButtonClick" ... />
Все кнопки, содержащиеся в ListBox, будут запускать это событие при нажатии на них. Из обработчика событий можно использовать e.OriginalSource, чтобы получить ссылку обратно на кнопку, которая была нажата.
Очевидно, что это слишком упрощенно, если у вашего ListBoxItems есть более одной кнопки, но во многих случаях это работает просто отлично.
Вы можете создать пользовательский элемент управления (.ascx) для размещения listbox. Затем добавьте публичное событие для страницы.
Public Event btnRemove()
Затем при нажатии на кнопку событие в пользовательских элементов управления
RaiseEvent btnRemove()
Вы также можете передавать объекты через событие, как и любой другой метод. Это позволит вашему пользовательскому элементу управления указывать Вашей странице, что следует удалить.