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 に答える