問題タブ [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.
wpf - テンプレート列内のバインディング コントロール
3列のデータグリッドがあります。列はProperty, Operator, Value
. これらは、データベースに保存されているドキュメントに関するものです。Property
および列の値はOperator
、ビジネス オブジェクトの列挙から定義されます。
DataGrid をバインドする次のクラスがあります。
最初の 2 つのプロパティは列挙型です。上記のクラスの観察可能なコレクションをデータグリッドにバインドしました。すべての列はテンプレート列です。最初の 2 つの列にはCellEditTemplate
、コンボボックスが定義された があります。オブジェクト データ プロバイダーを使用して列挙型をバインドしました。3 番目の列はテンプレート列で、テンプレート セレクターを使用して読み込まれます。これは、最初の列で選択したプロパティに基づいて異なるコントロールをロードできるようにするためです。
また、3 番目の列にコントロールを動的にロードし (列のデータ テンプレートを明示的に設定)、データソースを設定する (AutoCompleteBox の場合) コンボボックスの選択変更イベントがあります。上記のアプローチは、Allow Add Row の設定が true に設定された状態でグリッドが最初にロードされたときに正常に機能しています。ロードされたコントロールの値をオブジェクトに取得できます (AutoCompleteBox で選択したアイテムを使用するなど)。
しかし、上記の入力が検索フィルターとして保存され、取得されるという問題に直面しています。取得中に、プロパティの値を動的にロードされたコントロールにバインドできません。DataGrid のさまざまなイベント (RowLoading、Loaded、SelectedCellChanged など) を試しました。
最後に、テンプレート セレクターでコントロールの値を設定できます。しかし、画面を見ると、空白のコンテンツが表示されています (オートコンプリートボックスとコンボボックスの場合)。動的コントロールをSearchValueに再バインドするにはどうすればよいですか?
詳細:
上記のグリッドのコンテンツは、DocumentProperty の監視可能なコレクションとして格納されます。オブジェクトの値は、データベース テーブルに XML として保存されます。ユーザーが再度ログインすると、XML のコンテンツが DocumentProperty の Observable コレクションに変換され、グリッドに再度バインドされます。ここで、セル テンプレートを配置してテキストブロックをその中に配置すると、問題なく SearchValue プロパティをバインドできるという問題に直面しています。しかし、検索値プロパティでバインドされたオブジェクトの ID をストーミングしています。したがって、バインドされたグリッドのテキストブロックには常に ID が表示されます。
上記のAutoCompleteBoxesにTempalte、Docment、Ownerなどの対応する名前を表示したいので。したがって、セル テンプレート セレクターを使用して列を DataTemplate 列として作成します。
wpf - WPF ListViewでItemTemplateSelectorをHeaderTemplateと一緒に使用するにはどうすればよいですか?
次のXAML定義ウィンドウを想定します。
そして、DataTemplateSelector
次のようにコードビハインドで定義されています:
ヘッダーテンプレートのコードがコメントアウトされていない場合、DataTypeSelectorは呼び出されなくなります。を同時に指定するにはどうすればよいですか?DataTemplateSelector
HeaderTemplate
wpf - 異なる DataGrid 行間での DataTemplate の複製
私は WPF 4 DataGrid を持っています。これにより、最初の ComboBox は、ID をキーイングする DataTemplateSelector を使用して、2 番目の ComboBox がバインドされているものを変更します。奇妙な理由で、同じタイプの 2 列目のセルはすべて同じ値にバインドされているように見えます。以前にこの問題を見たことがあるので、DataTemplate の使用に関連していると思いますが、明らかに、私が知る必要があることを理解していません。
これまでに組み立てたコードは次のとおりです。
MainWindow.xaml:
MainWindow.xaml.cs
c# - WPF を使用してコンテンツを動的に読み込む
わかりました、2 つのデータ テンプレートを作成したコンテナーがあります。基本的に、1 つのテンプレートは 5 つのテキスト ボックスとそれにバインドされたオブジェクト データを表示し、もう 1 つのテンプレートはその特定のオブジェクトを追加するためのボタンを表示します。私は DataTemplateSelector をサブクラス化し、それは機能しますが、レコードをナビゲートすると、セレクターが再び呼び出されることはありません。
では、コンテナがそのテンプレートを再選択するにはどうすればよいでしょうか。コンテナーは StackPanel であり、私は既に UpdateVisuals、InvalidateVisuals、InvalidateArrange、および ApplyTemplate を試しました。
XAML コード
グループボックスの変更内容の初期化
そして最後にセレクターコード
そして、これが私のナビゲーションコードのスニペットです
追加の 2 つのメソッドは、生徒の関係が null であるかどうかを確認することです。関係が作成され、データ コンテキストに追加されます。それ以外の場合、Entity Framework は変更を保存しません。上記のデータ テンプレートは基本的に、新しい学生を作成しようとしたときに学生 ID がないという問題を解決するのに役立ちます。
wpf - DataTemplateSelector を使用した ContentControl - ヘルプが必要
私は厄介な問題を抱えています...誰かが(お願いします!)助けてくれるかもしれません。タイプの列挙と、列挙から選択された各タイプの UI モデルを保持する必要があるプロパティを持つモデルを使用しています。次のように定義しましょう。
selectedType を変更するたびに datatemplateselector を使用してビューを変更するコンテンツ コントロールが必要です。
問題: ruleEditTemplateSelector によって返されるように作成する DataTemplates では、DataContextはType (それに同意します) ですが、DataTemplate を作成するには、editedModel にアクセスする必要があります...対処方法がわかりません
前もって感謝します!
xaml - SemanticZoom.ZoomedOutView の DataTemplateSelector
さまざまなタイプのアイテムのグループのセットがあり、すべてが共通の基本タイプ (ItemBase) から継承されています。私の各グループには、タイプの Items コレクションがありObservableCollection<ItemBase>
ます。
私の SemanticZoom.ZoomedInView では、DataTemplateSelector を設定できます。SelectTemplateCore() では、項目パラメーターをキャストして、適用するテンプレートを決定できます。
ただし、ズームアウトしたビューでは、オブジェクトは DependencyObjects として渡されます。渡されたデータをどのようにして使用するかを決定する方法を理解することはできません。
ズームアウト ビューで GridView の項目ソースを設定するには、次を使用します。
これは、ズームイン ビューとズームアウト ビューを同期させる唯一の方法であるように思われるため (ズームアウト ビューでグループをクリックすると、ズームイン ビューの適切な場所に移動して、そのグループの詳細を確認できます。
だから、SelectTemplateCore() で実際のグループを取得するという点で明らかな何かが欠けていますか、または ZoomedOutView の ItemsSource をバインドするより良い方法があることに失敗していますか?
c# - キャンバスを表示するのに適切なコントロールはどれですか?
これにふさわしいタイトルが見つかりません。
多くのキャンバス描画があり、プログラムのパラメーターに応じて、それぞれのキャンバスを表示する必要があります
元:
私はインターネットで 1 つの方法を読んでいました...これらのキャンバスのそれぞれは 内にあり、それぞれを選択するDataTemplate
ために a を使用する必要があります。DataTemplateSelector
DataTemplate
それを表示するために使用できるコントロールは だと思いますContentControl
が、私の質問は、 Content プロパティで をバインドする必要があるということPARAMATER
ですよね?
wpf - DataTemplateSelector を使用して選択された DataTemplate のアイテムをスタイルする方法
2 つの異なるデータ テンプレートを使用してリスト内の異なるアイテムを表示する Listview を作成しました。1 つはラベルとボタン、もう 1 つは単なるラベルです。テンプレートは、DataTemplateSelector を使用して選択されます。私の質問は、xaml を繰り返さずにホバー時に強調表示するなど、両方のデータ テンプレートにスタイルを適用するにはどうすればよいですか?
mvvm - 独自の DataTemplateSelector MVVM
ModelView-First アプローチで MVVM-Pattern を使用しています。これまでのところ、これはうまく機能します。これで、ViewModel にあるプロパティに応じてさまざまなコンテンツを表示する UserControl (ビュー) ができました。
まず、DataTemplates と DataTemplateSelector を使用して問題を解決しようとしました (このチュートリアルを参照してください)。これは非常にうまく機能していました。しかし、ViewModel に接続されておらず、モデルから入力できないクラス (オーバーライドされた DataTemplateSelector) があるため、このソリューションには満足できませんでした。
そこで、ViewModel のプロパティを使用する独自の TemplateSelector を作成しようとしました。残念ながら、DataTrigger はトリガーしていません。CheckBox から ViewModel へのバインドも機能していますが、DataTrigger では機能していません (デザイナーでさえこのパスを見つけることができません)。
わかりました、コードを見てください:
もちろん、さらに 2 つのコンテンツ コントロールでタスクを分離することはできますが、同じコンテンツが交差している場合はそれらを維持したくありません。それで、誰かが何か提案できますか?
よろしくお願いします!
c# - DataTemplateSelector / バインディングが機能しない
これは私のビューモデルです:
これは私の MainWindow です (MainViewModel インスタンスは Windows の DataContext に設定されています)。
PanesTemplateSelector クラスのコード:
Calculator-Control の内容:
CalculatorTemplateSelector クラスのコード:
最初の TemplateSelector が機能しています。適切なテンプレートが選択され、Calculator-Control が表示されます。しかし、Calculator-Control の TemplateSelector は機能していません。CalculatorTemplateSelector.SelectTemplate では、item-parameter は常に null です。しかし、CalculatorViewModel-instance が必要です。私の問題は拘束力のある問題だと思いますが、解決には至りません。何か案は?