首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有单击事件的XamlReader

具有单击事件的XamlReader
EN

Stack Overflow用户
提问于 2011-12-29 10:18:01
回答 2查看 2.1K关注 0票数 2

我在我的WPF项目中使用XamlReader。而且它可以工作(我的推荐信)

我目前的示例Xaml如下:

代码语言:javascript
复制
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="800" Height="600">
  <Button Name="Test1" Content="Test1" Width="357" Height="88" Margin="14,417,0,0" ></Button>
  <Button Name="Test2" Content="Test2" Width="357" Height="88" Margin="14,529,0,0" ></Button>
</Grid>

并添加按钮的单击事件如下:

代码语言:javascript
复制
button = LogicalTreeHelper.FindLogicalNode(rootObject, "Test1") as Button ;
button.Click += new RoutedEventHandler(Button1_Click);

这样写xaml有可能吗?

代码语言:javascript
复制
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="800" Height="600">
  <Button Name="Test1" Content="Test1" ... Click="Button1_Click"></Button>
  <Button Name="Test2" Content="Test2" ... Click="Button2_Click"></Button>
</Grid>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-01 10:59:21

XamlReader.Load不允许在其中附加eventHandlers。因此,使用这种技术动态地将eventHandlers附加到它。

1-在不使用eventHandlers -But的情况下编写Xaml字符串,写入这些控件的Name属性。

2-用XamlReader.Load(str);加载字符串

3-然后从它加载DataTemplate的内容。使用Grid template = ((Grid)(dt.LoadContent()));

注意:这里GridDataTemplate中的父控件。

4-按要附加事件处理程序的名称查找控件。Button img = (Button)template.FindName("MyButtonInDataTemplate");

希望能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2011-12-29 17:51:38

不是的。不能使用原始XAML保存事件或在运行时加载它们。这是XAML序列化的一个限制,因为序列化的XAML是自包含的,这意味着每个资源都应该在原始XAML中加载,而事件的代码逻辑则不是。阅读更多这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8666522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档