問題タブ [datatemplateselector]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
7293 参照

wpf - WPF DataTemplateSelector.SelectTemplate が ContentControl 派生型に対して呼び出されない

派生型のインスタンスによって設定される派生型ContentControlコントロール ( と呼びましょうMyContentControl)を構築しようとしています( と呼びましょう)。ControlTemplateDataTemplateSelectorMyTemplateSelector

私がこれをしようとすると:

MyTemplateSelectorこれらのコントロールにコンテンツを設定すると、メソッドのオーバーライドがと DataTemplateSelector.SelectTemplate()の両方に対して呼び出されることを期待しています。contentControlmyContentControl

実際には、contentControl に対してのみ呼び出されます。それを機能させるには何をする必要がありますか (そしてその理由は!) myContentControl?

(関連性があるかどうかはわかりませんが、現時点では、のメタデータ情報をオーバーライドする以外MyContentControlには何もしません。DependencyPropertiesDefaultStyleKeyProperty

編集(コンテンツを他の投稿から元の質問に移動):

次に、もう少し詳細な例を示します。

  1. MyContentControl を作成します。

    /li>
  2. 作成MyTemplateSelector:

    /li>
  3. メイン ウィンドウに追加ContentControlして制御します (例):MyContent

    /li>
  4. InitializeComponentこのコードを後(またはLoadedハンドラー) のどこかに追加します。

    /li>

手順 (2) で説明したブレークポイントはcontent="ABC"contentControl要素に対して 1 回だけヒットします。

0 投票する
1 に答える
459 参照

wpf - WPF テーマと TemplateSelector

そのため、スタイル (この場合は WhistlerBlue.xaml) を使用しており、データで TemplateSelectors を使用できるようにしたいと考えています。

ただし、これは機能していないように見えるため、誤りのようです。どのようにすれば (問題のあるスタイル、ListBoxItem スタイルを白紙にコメントアウトする以外に) DataTemplateSelector を使用できますか?

0 投票する
4 に答える
13183 参照

wpf - DataTemplateSelector から DataTemplate を明示的に更新しますか?

ContentControl.DataTemplateSelector を目的のものに設定しました。
コマンドなどに従って、ContentControl を呼び出して、xaml またはコードのいずれかでセレクターからテンプレートを再選択します。

感謝

0 投票する
2 に答える
27675 参照

c# - XAML からクラスを適切に参照する方法

わかりました、これは非常に初心者向けの質問です。私が尋ねるのはほとんど恥ずかしいことです...

XAML ファイルでクラスを参照したいと考えています。これは、DataGrid 列の適切な編集テンプレートを選択するための DataTemplateSelector です。

とにかく、クラスをコード ビハインドに記述し、ローカル名前空間を XAML の一番上に追加しましたが、XAML からクラスを参照しようとすると、クラスがローカル名前空間に存在しないことがわかります. 本当に単純なものが欠けているに違いありませんが、理解できません...

これが私のコードです。

XAML:

C#:

私が間違っていることはありますか?これは1-2-3のように単純であるべきだと思いました...

ありがとう!

0 投票する
1 に答える
1093 参照

c# - WPF - DataTemplateSelector 内から DataGridCell の値を取得する

WPFToolkit DataGrid で DataTemplateSelector を使用しています。同じ行の別のセルの値に基づいて、あるセルの編集テンプレートを選択したいと考えています。

DataTemplateSelector の SelectTemplate メソッドは 2 つの引数を取ります。1 つはグリッド行によって表示されるデータ項目で、もう 1 つはグリッド セルです。

私が知りたいのは、SelectTemplate メソッド内から別のセルの値を取得する方法です。ただし、セルのプロパティにアクセスしてこの情報を取得する正しい方法がわかりません。

誰でも助けることができますか?

よろしくお願いします。

0 投票する
2 に答える
1702 参照

wpf - データテーブルへのWPF DataGridバインディング

これは私を夢中にさせています。コードで DataGrid を作成し、それをデータテーブルにバインドしています。これは動的であり、グリッドが作成されるたびに行と列が異なります。

基本的に、データテーブルをループして、次のように各列の DataGrid 列を作成します。

ご覧のとおり、カスタム データ テンプレート セレクターを使用しているため、コンテンツに応じてセルを異なる方法でレンダリングできます。

テンプレートセレクターはこちら

これが私のstringCell DataTemplateです

問題は、テンプレートセレクターが各セルに対して呼び出されることです (予想どおり) が、それがどのセルであるかがわからないため、TextBlock にテキストを設定する方法がわかりません。私はこのようなことをしたいと思います

しかし、CellIndex を取得するために利用できるものはありません。Path=Row[CellIndex] を設定できる場所で、これと同様のことを行うにはどうすればよいですか

0 投票する
2 に答える
743 参照

wpf - .NET4 WPF Datagrid - さまざまなデータ型への対応

私は初心者のプログラマーで、キャリアというよりも趣味としてやっています。そのため、私が働いている会社の請求書を生成するためのアプリケーションをまとめています。私は、サプライヤーからのデータ フィードを取り込み、顧客、製品、料金などを照合して請求書を作成する請求書作成作業を行っています。私は今、それをきれいにして、顧客と料金の詳細を編集できるようにしようとしています. その一部は、ルックアップ値 (VAT 率、マークアップ値、カスタム レートなど) を保持する多数のテーブルを取得したことを意味します。

私は WPF、C#、.Net 4 でアプリケーションを作成しています。また、レイヤーを分離するための MVVM パターンを維持しようとしています。

データ レイヤーとその他すべてとの対話を処理する EditLookupTableViewModel という汎用 VeiwModel を作成しました。私の問題はビューにあります。上記のクラスで許可するすべてのデータ型を処理できる単一のビューを作成したいと思います。私が立ち往生しているビットはこれです。

データベース テーブルの現在の値のリストとしてデータを表示し、それらの値を編集したり、新しい値を追加したりできるようにしたいと考えています。さまざまなデータ型はすべて、Entity Framework 4 経由でアクセスされる SQL データベースのテーブルに基づいています。すべてのテーブルの列の数または型が同じというわけではありません。

DataGrid コントロールを使用してデータをリストとして表示する場合、表示されているデータ型に基づいて列の型を変更するにはどうすればよいですか?

色々なサイトで探しましたが、なかなか合いません。

DataTemplate を使用してから DataTemplateSelector を使用できると思いましたが、DataGrid の DataTemplate を作成する方法がわかりません。

次に、ContentPresenter を使用すると考えましたが、テンプレートを選択する方法がわかりません。

理想的には、いくつかのテーブルが同じ構造を持っているため、コードからテンプレートを制御できるように、ある種の og TemplateSelector を使用したいと思います。同じテーブルのテンプレートを再利用するのは素晴らしいことです。

複数のビューを作成するよりもエレガントなソリューションが必要であると確信しているため、どんな助けも大歓迎です。

ありがとう

サイモン

0 投票する
5 に答える
18056 参照

c# - WPF:特定の値が変更されたときにDataTemplateSelectorを再適用します

これが私が持っているXAMLです:

これが私のListTemplateSelectorクラスです:

GroupTemplateデータテンプレートはそれ自体の内部でListTemplateSelectorを参照するため、これが私が設定したように設定した理由です。これは、私がまとめることができる唯一の再帰的ハックです。しかし、それは私が抱えている問題ではありません。

私の問題は、IsLeafプロパティが変更されたときにItemTemplateからGroupTemplateに変更したいということです。これは、プロパティを初めて読み取るため、初めて美しく機能します。ただし、このプロパティが変更されると、テンプレートセレクターは再適用されません。これで、トリガーを使用して値にバインドし、アイテムテンプレートを適切に設定できますが、状態が異なる可能性があるため、アイテムごとに異なるテンプレートを設定できる必要があります。

たとえば、次のようなグループのリストがあるとします。

グループ1:IsLeaf = false、つまりtemplate = GroupTemplate

グループ2:IsLeaf = true、つまりtemplate = ItemTemplate

グループ3:IsLeaf = false、つまりtemplate = GroupTemplate

また、グループ1のIsLeafプロパティがtrueに変更されると、テンプレートは自動的にItemTemplateに変更される必要があります。

編集:

これが私の一時的な解決策です。それを行うためのより良い方法はありますか?

0 投票する
1 に答える
225 参照

wpf - ダイナミックグリッドにDataTemplateを適用するにはどうすればよいですか?

グリッドがあります。グリッドの列は、ユーザーの選択に基づいて実行時に自動生成されます。

コンテンツが負の数の場合、グリッド内のセルを赤にする必要があります。

DataTemplateSelectorを作成しました。DataTemplateSelectorは正しく呼び出され、セルが負の場合はテンプレートを返します。

列は自動生成されるため、テンプレートのバインディングに正しいフィールドを単純に配置することはできません。

このようなテンプレートを作成すると、テキストはグリッドがバインドされているオブジェクトの名前になります。

私が次のようなことをした場合:

Textblockが標準の自動生成セルを上書きしているように見えるため、セルは空です。

これを機能させる方法はありますか?別のアプローチを使用する必要がありますか?

0 投票する
2 に答える
807 参照

c# - データ テンプレート セレクターの使用時に WPF ComboBox キー インデックスが機能しない

データ テンプレート セレクターを使用する場合、WPF コンボボックスに関して問題があります。

基本的に、WPF コンボボックスには標準的な動作があり、キーボードを使用してその文字を入力すると、その文字から始まる項目に直接移動します。この機能の正式名称はわかりませんが、一時的に「キー インデックス」と呼ぶことにします。

アイテムを別の方法で表示する ComboBox を作成したいと思います。DataTemplateSelector を使用してこれを実現しました。

PartyTemplateSelector は次のとおりです。

キーのインデックス作成機能が失われることを除けば、正常に機能します。コンボボックスがドロップダウンされているときにキーを入力すると、入力した文字から始まるアイテムに移動しません。

誰でもこれで私を助けることができますか?

よろしく。