我正在使用此SimpleExpander的略微修改版本,以便我的扩展程序标头可以点击。
http://www.codeproject.com/Articles/248112/Templating-WPF-Expander-Control
以下是相关的源代码:
<ControlTemplate x:Key="SimpleExpanderTemp" TargetType="{x:Type Expander}">
<DockPanel>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
<ToggleButton x:Name="ExpanderButton" />
<!-- button with hard coded click handler -->
<Button Name="SharerHeader" Click="SharerHeader_Click_1">
<ContentPresenter Content="{TemplateBinding Header}" />
</Button>
</StackPanel>
</DockPanel>
</ControlTemplate>
效果很好。现在我想在我的应用程序中重用这个控件模板,所以我把代码移到app.xaml中。但是,我的标题被硬编码为click事件,我希望能够根据扩展器正在使用的页面设置单击处理程序。如何实现此目的?
答案 0 :(得分:1)
向项目中添加一个新的ResourceDictionary(将其命名为RD1.xaml),将模板移入其中。
使用此签名
添加一个新类(将其命名为RD1.xaml.cs)public partial class SomeClassName : ResourceDictionary
将此行代码添加到ResourceDictionary标记(在RD1.xaml中)
x:Class="WpfApplication1.SomeClassName"
将这些代码行添加到App.xaml(如果RD1在文件夹中,则添加FolderName)
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="FolderName\RD1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
现在您可以在RD1.xaml.cs中实现事件处理程序