Если Вы хотите интерполированные переменные, необходимо использовать Объект RegExp
https://пример developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Regular_Expressions
:
var str = "This is my name";
var replace = "i";
var re = new RegExp(replace, 'g')
str = str.replace(re, 'p');
alert(str);
Ну, в основном RoutedEvent
проходит через Logical
], либо от исходного элемента к корневому элементу (маршрут события Пузырь
), либо, реже, от корневого элемента к элементам подуровня (маршрут события Туннель
). Это означает, что если у вас есть кнопка
внутри StackPanel
, она сама находится внутри Grid
; если вы определите событие Click
в элементах управления, все они будут запускать его, если только один из них не обработает его.
Если маршрут события - Пузырь
(с именем как обычное событие Щелкните
), оно будет выглядеть следующим образом:
Button -> StackPanel -> Grid
Если маршрут события - Tunnel
(названный PreviewClick
]), все будет наоборот:
Grid -> StackPanel -> Button
Итак, теперь с обработкой все довольно просто. Если это маршрут Bubble
и кнопка
устанавливает для RoutedEventArgs.Handled
значение true, то StackPanel
и Grid
не вызовет его. То же самое с RoutedEvent
, если Grid
обрабатывает его,
RoutedEventArgs - это новый тип аргумента события, который существует для поддержки модели событий WPF: маршрутизированные события. Трудно объяснить в краткой записи, почему именно WPF выбрал эту модель или в чем суть, поэтому я начну с указания вам хорошей статьи на эту тему.