1

我正在使用这个 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 中。但是,我的标题被硬编码为单击事件,并且我希望能够根据正在使用扩展器的页面设置单击处理程序。我该如何做到这一点?

4

1 回答 1

1
  1. 将一个新的 ResourceDictionary 添加到您的项目(将其命名为 RD1.xaml),将您的模板移动到其中。

  2. 使用此签名添加一个新类(将其命名为 RD1.xaml.cs)

    public partial class SomeClassName : ResourceDictionary
    
  3. 将这行代码添加到 ResourceDictionary 标记(在 RD1.xaml 中)

    x:Class="WpfApplication1.SomeClassName"
    
  4. 将这些代码行添加到 App.xaml(如果 RD1 在文件夹中,则添加 FolderName)

    <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="FolderName\RD1.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
    </Application.Resources>
    
  5. 现在您可以在 RD1.xaml.cs 中实现事件处理程序

于 2012-10-26T06:12:04.853 回答