Rac*_*hel 9 wpf controltemplate routed-events
有谁知道为什么我不能在控件模板上设置事件?
例如,以下代码行将无法编译.它通过控件模板中的任何事件执行此操作.
<ControlTemplate x:Key="DefaultTemplate" TargetType="ContentControl">
<StackPanel Loaded="StackPanel_Loaded">
</StackPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
我使用的是MVVM设计模式,此处的控件位于ResourceDictionary中,该ResourceDictionary被添加到应用程序的MergedDictionaries中.
Tho*_*que 11
有谁知道为什么我不能在控件模板上设置事件?
实际上,你可以...但是你期望在哪里定义事件处理程序?在ResourceDictionary没有代码隐藏,所以没有地方放的事件处理程序代码.但是,您可以为资源字典创建一个类,并将其与x:Class属性关联:
<ResourceDictionary x:Class="MyNamespace.MyClass"
xmlns=...>
<ControlTemplate x:Key="DefaultTemplate" TargetType="ContentControl">
<StackPanel Loaded="StackPanel_Loaded">
</StackPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
C#代码:
namespace MyNamespace
{
public partial class MyClass : ResourceDictionary
{
void StackPanel_Loaded(object sender, RoutedEventArgs e)
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
(您可能还需要将资源字典的构建操作更改为"页面",我不记得确切...)
| 归档时间: |
|
| 查看次数: |
7594 次 |
| 最近记录: |