2009-04-20 18 views
3

私はwpfアプリケーションで作業しています。最近まで、メインウィンドウのリソースの中にxamlのResourceDictionaryがありました。リソースディクショナリには、ウィンドウ内のいくつかのリストボックスのスタイルを設定するために使用されたDataTemplateが含まれていました。私は最近、別のユーザーコントロールにポップアップウィンドウの内容を分割し、そしてそれ自身のファイルに私のResourceDictionaryを移動することを決めたリソースのためのWPFコードビハインド?

<Button n:Name="btnClickMe" Content="Click Me!" LeftMouseButtonUp="btnClickMe_Click" /> 

:このDataTemplateのためのXAMLは、イベントハンドラ、例えばへのポインタを含んでいました。しかし、もちろん、リソース辞書ファイル用のコードビハインドファイルはありません。私が説明したように物事が分割された状態で、これをどのように配線することができますか?

ありがとうございます!

答えて

3

ResourceDictionaryにコードビハインドを追加できます。あなたのクラス名が正しく参照されていることを確認してください。あなたはAppStyles.xamlで作業している場合たとえば、のResourceDictionaryでXAMLファイルは、クラスのだろう。では

x:Class="Client.App.Shell.themes.AppStyles" 

コードをビハインド、AppStyles.xaml.csは、あなたがクラスを持っていることを確認します:

namespace Client.App.Shell.themes 
{ 
    public partial class AppStyles 
    ... 
+0

そして、コードビハインドクラスのコンストラクタからInitializeComponentを呼び出すことを忘れないでください。私が知る限り、これを行うための組み込みの方法はありません。 – itowlson

+0

実際、私の現在のアプリケーションでは、何らかの理由でInitializeComponent()は必要ありません。私はそれが実際にはビジュアルをコンパイルしていないので、ちょうど辞書として機能しているからだと思うだろうが、私は100%確実ではない。 –

+0

おそらくそれはフレンドリーな辞書マージのためにこのテクニックを使っているからです。つまり、ではなくを書くことができます呪文は笑顔です。後者の構文を使用すると、あなたが正しいと確信しています。おそらくInitializeComponentは必要ありません。混乱して申し訳ありません! – itowlson

1

あなたは新しいクラスを追加し、リソースディクショナリプラス.cs拡張子と同じ名前で、それを名前を付け、それは背後にあるコードになるようにVisual Studioが自動的に物事を設定しますすることができますファイル。

たとえば、Buttons.xamlというリソースディクショナリがある場合は、Buttons.xaml.csというファイルを追加します。

関連する問題