問題タブ [controltemplate]
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 - WPFカスタムコントロール:画像へのTemplateBinding
とを使用して、WPFカスタムコントロールを作成してButton
いImage
ますText
。ImagePath
コントロールに2つの依存関係プロパティを追加しましText
た。コントロールテンプレート(Themes \ Generic.xaml内)は、画像とテキストを水平方向に配置する単純なスタックパネルです。
Text
プロパティは正常に動作します。しかし、何らかの理由で、依存関係プロパティを使用TemplateBinding
してパスを取得すると、テストプロジェクトのサンプル画像が表示されません。カスタムコントロールのを一時的に画像へのパスにImagePath
置き換えて画像をテストしました。その場合、画像が表示されます。TemplateBinding
この分野の経験が豊富な人が、コントロールが期待どおりに機能しない理由を調べて教えてくれることを願っています。ご協力いただきありがとうございます。
私のVS2008ソリューションには、CustomControlDemoという1つのプロジェクトが含まれています。プロジェクトには、カスタムコントロールTaskButton.csと、コントロールのテストに使用するメインウィンドウWindow1.xamlが含まれています。私のテスト画像calendar.pngは、プロジェクトのルートレベルのResourcesフォルダーにあり、Generic.xamlは、同じくプロジェクトのルートレベルのThemesフォルダーにあります。
これが私のカスタムコントロールのコードです(TaskButton.csから):
そして、これが(Generic.xamlからの)コントロールテンプレートです:
最後に、コントロールのテストに使用しているWindow1マークアップを次に示します。
画像パスが機能しない理由はありますか?再度、感謝します。
wpf - WPF のテンプレートに基づいて、実行時に異なるコンテンツを持つ TabItems を作成する
私は WPF を使用してアプリケーションを作成しています。その一部には、カスタムの社内デバイスを構成するために使用されるさまざまなファイルをユーザーが管理することが含まれます。同じ TabControl 内のタブでさまざまな種類の構成を操作できるようにする必要があります。つまり、TabItems のコンテンツを動的に生成する必要があります。ControlTemplates でこれを行いたいのですが、まだ機能するテンプレートを取得できていません。Window リソースで定義された「pendantConfigurationTabItemTemplate」という ControlTemplate があり、次のコードを使用してテンプレート (アクセスする必要がある名前付きアイテムを含む) を TabItems に適用し、それらを親 TabControl に追加します。
コードビハインド:
ただし、プログラムを実行するたびに、タブコントロールにタブが追加されず、代わりにタブコントロールが(一見)テンプレートのコンテンツに置き換えられるかカバーされます。誰かがこれで私を助けてくれますか?
事実上、私がやりたいことは、WPF テンプレートを TabItem ファクトリとして使用することです
wpf - MVVM/コマンドと ControlTemplates
現在、MVVM/Commands と ControlTemplates をいじっています。私がやろうとしていることは非常に簡単です。たとえば、ユーザーがそれぞれに対してアクションをトリガーできる人のリストが必要です。しかし、ボタンでリストから削除したいなどの理由で、イベント/コマンドハンドラーは人物オブジェクトではなく実行する必要があります。
これまでに行ったことは、PersonVM のリストを公開する VM を作成し、それぞれが個人オブジェクトを保持することでした。次に、個人を表示する ItemsControl を含む controltemplate を使用して CustomControl を作成しました。
すべてのデータがきれいに表示され、まったく問題ありません。
次に、ユーザーがリストから人を削除できるようにする部分を追加しようとしました。そこで、データテンプレートにボタンを追加しました。それでも問題ありません。
次のステップは、ボタンによってトリガーされるコマンドを公開することでした。
最初のアプローチは、Josh Smith の RelayCommand を使用することでした。そのため、そのうちの 1 つを PersonViewModel に追加し、ボタンにバインドしました。動作しますが、問題は、(コマンドの実行後に) 親 vm が処理しなければならないイベントを発生させる必要があることです。ますます多くのコマンドでコードが乱雑に見えるので、それは良くありません。
そのため、RoutedCommand を使用するようにすべてを作り直し、コントロール階層の上位レベルに CommandBinding を追加しようとしました。しかし、ControlTemplate ではビューモデルでメソッドを呼び出すことができないため、これは不可能です。
だから、その問題に対する正しいアプローチは何だろうと思っていますか?どういうわけか、私は間違った方向に進んでいると信じていますが、どこにあるのかわかりません。
ティア・マーティン
wpf - WPF: ControlTemplate で {TemplateBinding Margin} を使用すべきではないのはなぜですか? Margin は要素のコンテナーのみを対象としていますか?
次のように、ボタン用に独自の ControlTemplate を作成しました。
さて、ボタンにマージンを設定すると、次のようになります。
ボタンには実際には 2 倍の Margin - 40 があります。実際、コントロールは Margin を使用してはならず、Margin プロパティは配置フェーズ中にボタンの祖先によってのみ読み取られると想定しました。その後、WPF のデフォルト スタイルを調べたところ、いずれも Margin を使用していないことがわかりました。
これは正しい結論ですか (Margin はコンテナーによって正しく配置されるためだけに制御されているということです)? つまり、スタイルで {TemplateBinding Margin} を使用するたびに、代わりに 2 つのマージンが得られるのでしょうか。そして、私のコントロールが使用すべきではない同様のプロパティのリストはありますか (それらは「周囲の世界」のみを対象としているため)?
これについて説明している MSDN ページを教えてください。ありがとうございました!
編集:
http://msdn.microsoft.com/en-us/library/ms745058.aspxとhttp://msdn.microsoft.com/en-us/library/ms751709.aspxで答えを見つけるべきだと思いますが、私はしませんMargin プロパティを使用するのは決してコントロールではなく、それを評価してレイアウトに影響を与えるのは常に祖先または wpf システムであると明示的に述べたとは思わない...
silverlight - プログラムで ResourceDictionary 項目にアクセスする
「MySilverlightControls」と呼ばれる Silverlight コントロール アセンブリがあります。そのアセンブリのいくつかのフォルダーの下に、サード パーティ ベンダーのグリッド列を拡張するクラスがあります。これを「MyImageColumn.cs」と呼びましょう。
という名前のリソース ディクショナリも作成しましたGeneric.xaml
。これはThemes
、アセンブリのフォルダにあります。そのリソース ディクショナリで、 MyImageColumnTemplateという ControlTemplate を定義しました。
私の質問は: MyImageColumn から、このコントロール テンプレートをプログラムで参照/ロードして、列のプロパティに割り当てるにはどうすればよいですか? 次のような構文を使用することを期待しています。
しかし、これは常に null を返します。アセンブリを Reflector に読み込むと、Generic.xaml
ファイルがそこにあり、リソースの名前が で、MySilverlightControls.g.resources
その中のパスが であることがわかりますthemes/generic.xaml
。
このリソース ディクショナリ内の個々の項目に正確にアクセスするにはどうすればよいですか?
wpf - コントロールテンプレートを継承する方法
CheckBox
いくつかの特別な操作の制御をオーバーライドしたWPFプロジェクトに取り組んでいます。それは正しく機能しています。
私の問題はControlTemplate
、テーマ(codeplexのshinyred.xaml)から適用されたものが、オーバーライドされたコントロールに適用されないことです。CheckBox
ControlTemplate
新しいコントロールで使用するためにを継承する方法はありますか?
私が見つけることができるすべてのサンプルは、のスタイルを継承することに焦点を当てていますが、CheckBox
については何もありませんControlTemplate
。
silverlight - Silverlight 3 で実行時に ControlTemplate パーツを置き換えるにはどうすればよいですか?
XAML のリソース セクションで定義されたテンプレートを使用するカスタム コントロールを作成しており、実行時にコントロールのインスタンスの 1 つまたは複数のテンプレート パーツを置き換えたいと考えています。
たとえば、コントロールのテンプレートに「ActivePart」という名前のパーツがある場合、コントロールのインスタンスにある ActivePart の FrameworkElement を新しい FrameworkElement に置き換えるにはどうすればよいですか?
Control.Template プロパティが書き込み可能であることは認識していますが、テンプレート全体を新しく作成するよりも、そのテンプレートの特定の部分を置き換える方法を見つけたいと思いますが、適切な名前付き部分を置き換えることで既存のテンプレートを編集するソリューションは受け入れられる。
私は C# を使用しており、FrameworkElement を使用して実行時にこれを行う必要があるため、XAML ベースのソリューションや提案は探していません。
PS GetTemplateChild() がコントロール インスタンス内の名前付きテンプレート パーツの FrameworkElement を返すことは知っていますが、それがそのパーツを新しい FrameworkElement に置き換えるのにどのように役立つかわかりません。
wpf - セッタープロパティをオーバーライドするWPF
XAMLでラベルにスタイルを使用しています:
私が見ている問題は、「reatreatText」のFontSizeプロパティがセッター値30からオーバーライドされないことです。これは正常にビルドされますが、最終表示にはサイズ30の「reatreatText」があります。この値がオーバーライドされないのはなぜですか。
前もって感謝します。
wpf - コントロールテンプレートのボタンを使用し、コードビハインドなしでwpfリストボックスの選択をクリアします
ユーザーがクリックできるを含むStyle
WPFのを作成し、選択をクリアしたいと考えています。これを任意の に適用できるように、コードビハインドを使用したくありません。私はs とs を使用してみましたが、最初にしか機能せず、セットを以前の選択に戻して停止するため、問題があることが判明しました。ユーザー コントロールを使用できることはわかっていますが、.ListBox
Button
ControlTemplate
ListBox
Style
ListBox
EventTrigger
Storyboard
Storyboard
Style
c# - ControlTemplate.Triggers での TemplatedParent バインディング
テキストが空の場合、ControlTemplate のトリガーを使用してカスタム コントロールの背景をビジュアル ブラシに設定しようとしています。関連するコードを次に示します。
ただし、テキストが空の場合、ビジュアル ブラシは適用されません。ただし、ビジュアル ブラシをコードで作成し、それを依存関係プロパティとして公開すると、次のコードは機能します。
ただし、XAML でブラシを定義したいと思います。2 番目のバインディングは正しく機能するのに、最初のバインディングは機能しないのはなぜですか?