【发布时间】:2018-07-05 11:57:35
【问题描述】:
我得到以下代码,将是一个动态生成的网格:
string xaml = "<Grid Margin='8 8 0 0' Width='175'>" +
"<Grid.RowDefinitions>" +
"<RowDefinition Height='115'/>" +
"<RowDefinition Height='*'/>" +
"<RowDefinition Height='Auto'/>" +
"</Grid.RowDefinitions>" +
"<Image Source='C:/Users/SaFteiNZz/Curro/yo2.png' Height='115' Width='171' Stretch='Uniform'/>" +
"<Button x:Name='BtnEditAc' Grid.Row='0' Style='{StaticResource MaterialDesignFloatingActionMiniAccentButton}' HorizontalAlignment='Right' VerticalAlignment='Bottom' Margin='0,0,16,-20'>" +
"<materialDesign:PackIcon Kind='AccountSettingsVariant' Width='30' Height='30' Margin='0,0,0,5'/>" +
"</Button>" +
"<StackPanel Grid.Row='1' Margin='8,24,8,8'>" +
"<TextBlock TextWrapping='Wrap' FontWeight='Bold'>Pablo Antonio Hernandez Hernandez</TextBlock>" +
"<TextBlock TextWrapping='Wrap' VerticalAlignment='Center'>46080696N</TextBlock>" +
"</StackPanel>" +
"<Border BorderBrush='White' BorderThickness='1' CornerRadius='0' Grid.Row='0' Grid.RowSpan='3'>" +
"<Border.Effect>" +
"<DropShadowEffect BlurRadius='10' Direction='-90' Color='Black' ShadowDepth='0'/>" +
"</Border.Effect>" +
"</Border>" +
"</Grid>";
UIElement element = (UIElement)XamlReader.Parse(xaml, context);
empDisplay.Children.Add(element);
就像代码工作一样。
但我想为 按钮 (BtnEditAc) 设置一个点击事件,如果我直接在 XAML 字符串中执行此操作会引发错误(无法从文本 BtnEditAc_Click 或类似内容创建点击)。
有没有办法为那个按钮设置点击事件?或者以某种方式连接到一个函数?
我将使用 CLR 对象编码而不是 XamlReader 来实现它,但首先我想知道是否有解决方案。
希望你知道我做错了什么。
【问题讨论】:
-
您可以导航树(或按名称查找按钮)并添加委托以单击事件。我认为您不能直接从字符串中执行此操作...您将事件处理程序的代码放在哪里?
-
@Babbillumpa 事件处理程序就在包含它的函数的下方,在同一个类中。
标签: c# wpf xaml controls dynamically-generated