Я пытаюсь добавить элементы пользовательского интерфейса динамически, но я столкнулся с проблемой, я смог добавить элементы пользовательского интерфейса, но я не добавить событие щелчка на кнопкуДобавить Нажмите событие в динамичном пути
Ниже мой код:
ParserContext context = new ParserContext();
context.XmlnsDictionary.Add("", "http://schemas.microsoft.com/winfx/2006/xaml/presentation");
context.XmlnsDictionary.Add("x", "http://schemas.microsoft.com/winfx/2006/xaml");
string xaml = String.Format(" <StackPanel Orientation='Vertical'>");
xaml = xaml + "<StackPanel Orientation='Horizontal'>";
xaml = xaml + "<Button Margin='5,5,0,0' Background='AliceBlue' Foreground='DarkBlue' Height='25' VerticalAlignment='Bottom' HorizontalAlignment='Right' Width='82' Tag='12' Click='btnMy_Click'>";
xaml = xaml + "<StackPanel Orientation='Horizontal'>";
xaml = xaml + "<Image Source='/MotionTest;component/images/open.png' Width='18' Height='18' />";
xaml = xaml + "<TextBlock Text=' Open' VerticalAlignment='Center' FontSize='13' />";
xaml = xaml + "</StackPanel>";
xaml = xaml + "</Button>";
xaml = xaml + "</StackPanel>";
xaml = xaml + "</StackPanel>";
UIElement element = (UIElement)XamlReader.Parse(xaml, context);
myTestGrid.Children.Add(element);
И моя OnClick функция:
private void btnMy_Click(object sender, RoutedEventArgs e)
{
var myValue = ((Button)sender).Tag;
MessageBox.Show("Here = " + myValue);
}
Для этой линии:
xaml = xaml + "<Button Margin='5,5,0,0' Background='AliceBlue' Foreground='DarkBlue' Height='25' VerticalAlignment='Bottom' HorizontalAlignment='Right' Width='82' Tag='12' Click='btnMy_Click'>";
Если удалить
Click='btnMy_Click'
Он будет работать. Но если я добавить его, он показывает
Кто знает, как решить эту проблему? Спасибо заранее.
Как об этом [Динамические обработчики событий для Xaml только] (https://denisvuyka.wordpress.com/2010/02/21/dynamic-event-handlers-for-xaml-only-silverlight-content-xamlreader-ramora-pattern-and-mef /) –
Похож, что 'XamlReader.Parse' не поддерживает обработчики событий. Если бы это было так, то, по крайней мере, понадобился бы какой-то контекст, чтобы иметь возможность разрешать методы обработчика событий. Есть ли какая-то особая причина, по которой вам нужно разбирать XAML во время выполнения, вместо использования шаблонов данных или просто переключать видимость элементов пользовательского интерфейса? –
Дорогой Питер, мой прикладной интерфейс динамичен, он не фиксирован. –