問題タブ [datatrigger]

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 投票する
1 に答える
5756 参照

wpf - WPFで列挙値としてItemsourceを持つコンボボックスitemTemplateを宣言する方法は?

私は列挙型を持っています

この Enum を XAML のコンボボックスにバインドしました。

コンボボックスを定義する際に、コンボボックスの ItemTemplate を定義して、2 つの UI 要素を取得しました。

  1. 列挙値を示す TextBlock (説明)
  2. 画像

私はこれをXAMLで行いました。

コンボボックスの Enum 値の各項目に対応する画像をどこで指定できるのでしょうか? それはデータトリガーで可能ですか?

このシナリオ用の XAML を持っている人がいれば、本当に感謝しています。

よろしくお願いします

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

wpf - ComboBoxの選択を変更すると、DataTriggerが壊れます

スタイルトリガーからコンボボックスの選択された値を設定しようとしています。コンボボックスの値を手動で変更しない限り機能しますが、手動で選択を変更すると完全に機能しなくなります。これを解決するにはどうすればよいですか。サンプルコードが添付されています。助けてください

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

wpf - グリッドの ColumnWidth に基づいて四角形の塗りつぶしを変更する

基本的に、タイトルが示すように、列幅が .50 の場合は長方形を赤、.75 の場合は琥珀色、1 の場合は緑にする必要があります。

DataTriggers を使用してこれを達成できると思っていましたが、何らかの理由で「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。ここに私のコードがあります。

参考までに、width プロパティは timer_tick イベントを通じてバックエンドで変更されます。

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

c# - WPFツールキットDataGridCellスタイルのDataTrigger

DataGridで値が更新されている場合、セルの色を黄色に変更しようとしています。

私のXAML:

グリッドは配列のリストにバインドされます(Excelのような値のテーブルを表示します)。配列の各値は、IsDirty依存関係プロパティを含むカスタムオブジェクトです。値が変更されると、IsDirtyプロパティが設定されます。

私がこれを実行すると:

  • 列1の値を変更=行全体が黄色になります
  • 他の列の値を変更する=何も起こりません

どの列にあるかに関係なく、変更されたセルだけを黄色にしたいのです。XAMLに何か問題がありますか?

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

wpf - WPF トリガー/スタイルは別のものをオーバーライドします

私はそのように定義された を持っていListViewますItemContainerStyle:

次に、トリガーを含む、baseListViewStyleに適用するいくつかの基本スタイルを定義しました。ListViewStyle

ここTriggerでは、マウスが上にあるときに行が強調表示されます。良い。

私も持っていDataTriggerますListViewItem

test が true の場合、小さなフェード アニメーションが再生されます。「テストが真」の行にマウスを移動すると、アニメーションが停止し、マウスオーバースタイルが表示される場合を除いて、これはすべて機能します。

でそのスタイルをオーバーライドする方法はありますDataTriggerか?

ティア

アップデート:

SomeFunkyAnimation背景色をアニメーション化します。そのための xaml は次のとおりです。

MouseOverトリガーは で定義されていますbaseListViewStyle。はDataTriggerで定義されていItemContStyleます。

スタイルトリガーを削除しようとしましたが、デフォルトのスタイルが既に定義されていると思われるため、アニメーションをオーバーライドするためMouseOver、うまくいきませんでした。ListviewMouseOverDataTrigger

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

c# - コントロールの依存関係プロパティをコントロールのコンバーターに提供しますか?

Culture と Translation の 2 つのオブジェクトがありますが、どちらも複雑ではありません。Culture は単純な CultureInfo に似ていますが、追加のフィールドがあります。文化は頻繁に変わることはなく、最初から多くはないでしょう。ただし、多数の Translation が存在し、各 Translation には CultureID プロパティがあります。各翻訳には TranslationID があるため、翻訳をリンクすることができます。データは次のようになります。

TranslationID、 CultureID、テキスト;
1, en , こんにちは;
1、 es、Hola;
2, en , さようなら;
2、 es、アディオス。

Cultures のリストと Translations のリストをバインドできるコントロールを作成しようとしています。TranslationID ごとに、すべての Culture の Translation があるとは限りません。だから私は私の文化として英語、スペイン語、ドイツ語、中国語を持っているかもしれませんが、「お元気ですか」については英語とドイツ語の翻訳しか持っていないかもしれません.

同じ TranslationID の Translations のリストがコントロールにバインドされます。コントロール内では、カルチャごとに 1 つまたは 0 つの翻訳しかありません。Expander 要素の xaml Listbox があります。各 Expander には、Culture.Name プロパティをヘッダーとして持つ 1 つの Culture が必要です。Translation が存在する場合、各 Expander のコンテンツは、その Culture の Translation を含む TextBox です。存在しない場合、TextBox は空白です。これまでのところ、私はこれだけの作業をしています。

コントロール内では文化の翻訳を編集できますが、コントロールの外では翻訳を編集するために文化の 1 つを選択できます。そうなったらいいですよね。現在編集中のカルチャが行うべきことは、そのカルチャを含むコントロール内のエキスパンダーを、コントロールを開いたときに展開される唯一のものにすることです (コントロールはポップアップになります)。コントロールのリストボックス内の他のすべての Expanders は展開しないでください。CurrentTranslationCulture と呼ばれる、現在の編集カルチャを取得する依存関係プロパティをコントロールに作成しました。

ここに私の問題があります。DataTrigger とカスタム コンバーターを使用して、Culture と CurrentTranslationCulture を比較してみました。ただし、コンバーターは独自のクラスであるため、CurrentTranslationCulture にはアクセスできません。ConverterParameter として渡そうとしましたが、DataTrigger の Binding で ConverterParamater パラメーターにバインドできませんでした。これが私が取るべきアプローチであるかどうかさえわかりません。誰かがこれに対する解決策を知っていますか、それとももっと良い解決策を知っていますか? 前もって感謝します。

コード: 以下のコードは完全には機能しません。ConverterParameter を取り出すと機能しますが、すべての Expanders が閉じられます。ConverterParamerter 内の ElementName=labelTranslationEditor は、アクセスしようとしてコントロールに付けた名前です。

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

wpf - 値バインディングを使用した DataTrigger

なぜこれが機能しないのですか?

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

c# - プロパティとデータの値がtrueの場合にWPFトリガー

Styleプロパティとデータ値がtrueの場合、コントロールのを変更できる必要があります。たとえば、バインドされたデータにはIsDirtyプロパティがあります。IsDirtytrueで、コントロールが選択されているときに、コントロールの背景色を変更したいと思います。MultiTriggerとクラスを見つけましたMultiDataTrigger...しかし、この場合、データとプロパティを何らかの方法でトリガーする必要があります。これどうやってするの?

別の注意:XAMLではなくコードビハインドでこれを実行できる必要があります。

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

wpf - トリガーでTextBlock.Textを変更しても機能しませんでした

私の見解には次のコードがあります:

しかし、TextBlock.Textを文字列に設定しても機能しませんでした。TextBlock.FontStyleが斜体に変更されるため、トリガー全体が正しく機能します。なにが問題ですか?

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

wpf - ControlTemplate内のDataTriggerは更新されません

CustomerViewModelオブジェクトのリストにバインドされたListBoxがあり、それぞれに2つの依存関係プロパティがあります。-
名前(文字列)
-説明(文字列)
-IsVisible(ブール値)

(IsVisibleプロパティはデフォルトでTrueであり、CustomerViewModelのToggleVisibilityコマンドを使用して逆になります)

ボーダーコントロールの右側に名前と説明を表示したいと思います。これは、IsVisibleプロパティがTrueの場合は背景が透明で、Falseの場合は緑です。

私の問題は、IsVisibleが変更されたときにSetter部分がトリガーされないため、以下のコードのDataTrigger部分が希望どおりに機能しないことです。

私は何が間違っているのですか?

これが私のコードです:

更新:
Goblinが指摘したように、DataTriggerには実際にTargetName="visibilityColumn"がありませんでした。

ただし、「実際の」問題は次のとおりです。

チェック可能なMenuItemには、IsCheckedプロパティにTwoWayバインディングモードがあるため、実際には、データバインディングとToggleVisibilityコマンドを介してIsVisiblityを2回反転していました...おっと:)