問題タブ [datatemplate]
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.
c# - DataTemplate を介して WPF-ComboBoxItem の TextSearch.Text を設定します
データ テンプレートを使用して ComboBox 内のいくつかの項目を視覚化します。ItemsSource は ObservableCollection にバインドされています。簡単にするために、ObservableCollection に人を入れたとしましょう。
私の DataTemplate は次のようになります。
ここで、個人クラスに 3 番目のプロパティを導入せずに、ComboBox で氏名のオートコンプリートを有効にしたいと考えています。したがって、ComboBox で TextSearch.TextPath プロパティを使用したくありませんが、代わりに DataTemplate の各 ComboBoxItem の TextSearch.Text-Property をバインドしたいと考えています。残念ながら、これを行うと (MultiBinding と StringFormat で動作し、Snoop でテストされています)、バインドされた値は StackPanel にのみ登録されますが、Snoop (優れたツール) を使用すると、このスタックパネルがさらにいくつかの ComboBoxItemTemplate のコンテンツとして機能することがわかりました、別の境界線などを配置し、最後に外側の StackPanel の周りに ComboBoxItem タグを配置します。したがって、TextSearch.Text-setting は有効ではありません。これは、作成された ComboBoxItem 内ではなく、その中に設定する必要があるためです。
質問: XAML-Styles と -Control-Templates のみを使用して、この TextSearch.Text-Property を DataTemplate から周囲の ComboBoxItem に伝播するにはどうすればよいですか? このソリューションでは、ComboBox と ComboBoxItem の default-ControlTemplates とカスタム (Item-)DataTemplate を変更できますが、コード ビハインドを使用しないか、少なくともあまり使用しません。たぶん、添付された動作も問題ないでしょう。しかし、TemplateBinding や RelativeSource などを使用せずに機能させる方法があるに違いないと確信しています。リストに Hans Josef と Hans Peter が含まれている場合、'Hans' と入力すると Hans Josef が自動提案されますが、'Hans P' と入力すると Hans Peter が自動提案されます。
解決策はありますか?
silverlight - Silverlight のリストボックスの DataTemplate をリストのコレクションにすることはできますか
監視可能なコレクションの配列があり、これらすべてのコレクションを 1 つのリスト ボックスに表示したいと考えています。これらの各コレクションのデータは同じタイプであり、特定のカテゴリに基づいて分離されています。
私の質問は、リストボックスの DataTemplate にリストボックスを含めることは可能ですか?
wpf - 動的に追加された DataTemplate - Converter の StaticResource が見つかりません
次のコードを使用して、GridView に列を動的に追加しています。
Debug.Print の結果は次のとおりです。
実行すると、_blockToBrushConverter が見つからないと表示されます。
例外は次のとおりです。
Forecolor 属性を削除すると、XAML は問題なく解析されます (期待される結果が得られます)。DateTemplate.Resources にコンバーターを含めると、それが見つかることが保証されているようですが、何らかの理由でそうではありません。
また、コンバーター リソースの宣言をツリーの上位 (ウィンドウ レベル) に移動しようとしましたが、それもうまくいきませんでした。「_gridViewCenterItemStyle」を見つけることができるようですが、何らかの理由でコンバーターを見つけることを拒否します。
どんなアイデアでも大歓迎です。
役立つ場合に備えて、スタック トレースを含む例外全体を次に示します。
編集:
問題解決: プロジェクト全体を検索したところ、リソース ディクショナリの 1 つに同じ x:Key を持つ BlockToBrushConverter リソース宣言の余分なコピーがあることに気付きました。重複を排除すると、問題はなくなりました。
wpf - WPF DataTemplateSelector.SelectTemplate が ContentControl 派生型に対して呼び出されない
派生型のインスタンスによって設定される派生型ContentControl
コントロール ( と呼びましょうMyContentControl
)を構築しようとしています( と呼びましょう)。ControlTemplate
DataTemplateSelector
MyTemplateSelector
私がこれをしようとすると:
MyTemplateSelector
これらのコントロールにコンテンツを設定すると、メソッドのオーバーライドがと DataTemplateSelector.SelectTemplate()
の両方に対して呼び出されることを期待しています。contentControl
myContentControl
実際には、contentControl に対してのみ呼び出されます。それを機能させるには何をする必要がありますか (そしてその理由は!) myContentControl
?
(関連性があるかどうかはわかりませんが、現時点では、のメタデータ情報をオーバーライドする以外MyContentControl
には何もしません。DependencyProperties
DefaultStyleKeyProperty
編集(コンテンツを他の投稿から元の質問に移動):
次に、もう少し詳細な例を示します。
MyContentControl を作成します。
/li>作成
/li>MyTemplateSelector
:メイン ウィンドウに追加
/li>ContentControl
して制御します (例):MyContent
/li>InitializeComponent
このコードを後(またはLoaded
ハンドラー) のどこかに追加します。
手順 (2) で説明したブレークポイントはcontent="ABC"
、contentControl
要素に対して 1 回だけヒットします。
wpf - WPF - DataTemplates を使用した StackPanel へのデータバインド
試してみるとフォーカスが変わったので、質問を修正しました。問題を次のように絞り込みました...
TreeView の選択した項目を StackPanel (またはユーザー コントロールを保持できる他のコンテナー) にバインドしようとしています。このコンテナーは、選択した項目の種類に応じて、UserControl を表示します。
ここに StackPanel の xaml があります (treeview と stackpanel の両方が同じウィンドウにある ==> 異なるグリッド列)
(リソースではなく) スタックパネルの直下にユーザー コントロールを配置すると、選択したオブジェクトがデータ コンテキストとして表示されます。その中に TextBox を配置すると、選択したアイテムの正しいタイプが表示されます。
何らかの理由で、(DataType を設定しなくても) DataTemplate 内に配置すると、何も表示されません。
任意の提案。このようなコンテナーとして適切に見える他のコントロールを見つけることができないようですが、おそらく StackPanel はこれに適したコントロールではないと考えています。
前もって感謝します。
wpf - WPF では、バインディングのパスにバインディングを配置できません。別の方法はありますか?
DataTemplate
の として使用しているがCellTemplate
ありGridViewColumn
ます。
のためにこのようなものを書きたいDataTemplate
:
MyGridView
は にバインドされており、名前が のヘッダーと等しいDataTable
の列にバインドしたいと考えています。[それが理にかなっていることを願っています!]DataTable
GridViewColumn
DataTemplate
残念ながら、これは機能しません。XamlParseException が発生します。「'Binding' 型の 'Path' プロパティに 'Binding' を設定することはできません。'Binding' は、DependenceyObject の DependencyProperty にのみ設定できます。」
どうすればこれを設定できますか?
編集(DanMによるコメントを質問に上げる)
私は基本的にDataTemplate
、バインディングが とが接続されDataContext
ている列によって決定される が必要DataTemplate
です。代替手段はありますか?
wpf - 含まれているコントロールからのトリガーを使用して、DataTemplateのサブアイテムのプロパティを変更することは可能ですか?
IsMouseOverトリガーで長方形の背景色を変更したいのですが、これは可能ですか?
編集:
セッターのプロパティ値を子コントロールにバインドする方法はありますか?
wpf - itemtemplate (WPF) からコンボボックスにツールチップを表示する
DataTemplate を含む ComboBox があります。DataTemplate には 2 つのコントロールがあり、それぞれに ToolTip が添付されています。ComboBox の項目のリストには、各コントロールにカーソルを合わせると、期待どおりのツールヒントが表示されます。ただし、コントロールは期待どおりにレンダリングされますが、ComboBox の上部にある選択された項目領域にはツールヒントが表示されません。ツールチップを強制的に表示する方法はありますか?