問題タブ [multidatatrigger]

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

wpf - WPFスタイルの複数の条件でトリガーする正しい方法は何ですか

私のWPFアプリケーションにはDataGridコントロールがあります。DataGridRowうまく機能するクラスのデフォルトのカスタムスタイルがあります。ただし、このDataGrid特定の画面の特定の1つには、別のカスタムスタイルが必要です。

各行のアイテムにはbool、設定すると、その行を異なる前景色と背景色で表示したいというプロパティがあります。ただし、行が選択されていて、そのプロパティが設定されている場合は、前景色と背景色を変えて、行が選択されていて、プロパティがtrueに設定されていることを示します。

これが私が試したことです:

これにより、「Binding must be non-null」エラーが発生します。これはBinding、MultiDataTriggerの最初の条件にプロパティがないために発生していると思います。

XAMLでこれを書く正しい方法は何ですか?

編集:

nemesvとRachelの答えを試した後、コードがコンパイルされて実行されます。ただし、IsSelected=trueおよびIsInLiveMode=trueの場合に選択した色は表示されません。これが私が今持っているものです:

問題のケースが機能しない理由について何かアイデアはありますか?

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

wpf - Button の派生クラスで DataTrigger が起動しない

アプリ全体にアイコンとテキストを含むボタンが大量にあり、それらすべてに共通のスタイルを抽出しようとしています。私は、ボタンから派生するというこのアイデアを思いつき、いくつかの依存関係プロパティを持っています。このカスタム ボタン クラスには、アプリケーション内のすべてのボタンに共通のスタイルがあります。

私のカスタムボタンの定義:

そして、私はこのコントロールを次のように使用しています:

うまくいっているように見えますが、制限されたデータが変更されたときにトリガーが起動しません。同じトリガーを通常のボタンに適用すると、うまく機能しているようです。

何か不足している場合は教えてください。

編集:エレガントなソリューション が見つかりました。添付プロパティの利用

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

c# - Image.SourceをTextBoxとLabelの値の比較に依存させる

私は次のXMLを持っています:

およびXAML:

*の基準値と等しいImage.Source条件に依存させたい。参照値はXMLファイルへのバインドであるため、比較の基礎としてそれを使用することも問題ありません。にはまだ存在しないプロパティへのバインディングがあるため、オプションとして使用できます。TextBox.TextLabelTextBox

*Label現在ContentStringFormat、その値を変更するために使用しています。これに問題がある場合は、取り除くことができます。

この状態を表すプロパティに直接バインドするためにaDataTriggerを使用できますが、それはハックのように感じられるので、避けたいと思います。以下に示すようにを設定しようとしましたが、最初に(に対しては機能しました)MultiDataTriggerの条件を機能させることができませんでした。次に、私の場合、定数値は適切ではありません。また、条件がfalseと評価された場合の「else」句またはデフォルト値はありませんが、最初にチェックを行うことができれば、問題がないことを期待しています。LabelTextBox

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

c# - 他の Xaml ファイルから Usercontrol 内の要素にバインドする

ユーザーコントロールの要素にバインドする方法を教えてもらえますか?

IDataErrorInfo と連携する datatrigger を使用して、ボタンを無効/有効にしようとしています。

だから私は通常、要素が同じビューにあるときにこのようにします

しかし今、ビューで使用されているユーザー コントロール (AdressControl) のコントロールにバインドする条件を追加する必要があります。

このようにユーザーコントロールの要素に簡単にアクセスしたいと思っていました

しかし、役に立たない。どんな助けでも大歓迎です

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

.net - 条件が 1 つだけ満たされた場合に MultiDataTrigger が起動する

私の UserControl には、保存ボタンを有効にする前にすべて選択する必要がある 3 つの ComboBoxes があります。最初に null に設定されている ViewModel プロパティへのバインディングを使用して MultiDataTrigger を定義しました。したがって、コントロールが読み込まれると、ボタンは期待どおりに無効になりますが、ComboBoxes の 1 つが選択されるとすぐにボタンが有効になります。私が理解したように、MultiDataTrigger を起動するには、そのすべての条件が満たされている必要がありますか?

これが私のボタンスタイルです:

私のコンボボックス:

マイボタン:

そして私のコンバーター:

ありがとう、パックス

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

wpf - MultiDataTriggerは、TextBoxのIsReadOnlyプロパティを変更しません

私はMultiDataTrigger複数行で使用していますTextBox

とがtrueになると、EnableNewEntryは読み取り専用になるはずです。テストのために、背景色も変更しました。問題は、適切に変更された場所で変更されないことです。AllowArabicTextBoxIsReadOnlyBackground

私も次のセッターを試しましたが、それも機能しません:

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

リテッシュ

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

c# - XAML ResourceDictionary 内でのバインディング

自分がやろうとしていることはできないという恐ろしい気持ちがありますが、これで終わりです。たぶんもっと良い方法があります。

別のファイルに ResourceDictionary があり、UserControl (ビュー) に取り込まれています。

RD では、いくつかのボタン スタイルを定義します。そのうちの 1 つは条件を含み、"IsCurrentFilter" コンバーターが True を返す場合に前景を赤に設定します。

コンバーターは、同じ RD のさらに上に定義されています。

問題は、コンバーターが (比較を行うために必要な) ビュー モデルにアクセスできず、ViewModelプロパティが何もバインドすることを単に拒否することです。エラーは...

...ビジュアルツリーにないことを理解しているので、これはちょっと理にかなっています。

では、この ResourceDictionary 内のビュー モデルにバインドするにはどうすればよいでしょうか?

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

c# - 検証ルールが2つの検証ルールで正しく更新されない

検証ルールに関するいくつかの投稿を調べましたが、発生している問題に遭遇していません。

WPFウィンドウのテキストボックスに検証ルールを使用しています。2つのチェックがあります。1つは空のテキストボックス用で、もう1つは正規表現の一致を使用した無効な文字用です。

私の問題はそのようなものです:

私のテキストボックス:

  1. タイプA-動作し、何も表示しない
  2. 空の文字列のバックスペースを押す-動作し、検証エラーメッセージ「すべてのフィールドに値を入力してください」を表示します
  3. タイプ !-動作しません-「無効な文字が見つかりました」と表示されますが、「すべてのフィールドに値を入力してください」と表示されます。
  4. 空の文字列へのバックスペース-「すべてのフィールドに値を入力してください」という最初のエラーが引き続き表示されるため、技術的には機能します。
  5. タイプA-動作します。エラーメッセージはありません
  6. タイプ !-問題ありません。「無効な文字が見つかりました。

同じことが逆に起こります。

窓を開ける

  1. タイプ !-ファイン、「無効な文字が見つかりました。
  2. 空の文字列へのバックスペース-「すべてのフィールドに値を入力してください」ではなく、「無効な文字が見つかりました」と表示されます。

私のコードは次のとおりです。

ProviderNew.xaml:

背後にあるプライベートコード-ProviderNew.xaml.cs

バリューコンバータークラス

プロバイダークラス

検証ルールクラス

私が試したのは、LostFocusイベントとTextChangedイベントの両方を設定して、以下を使用して強制的に更新することです。

Validateメソッドにブレークポイントを設定すると、正しい一致が行われ、正しいValidationResultが返されますが、テキストは正しく更新されません。

私は信じられないほど愚かなことをしていますか?

任意の提案をいただければ幸いです。

編集1。

ええ、MultiDataTriggerとBinding to the textboxesを使用して、これを機能させています。

動作しないのは、最初にウィンドウを表示したときにボタンが有効になっていることです。これにより、ユーザーが空のテキストボックスで[保存]をクリックできるようになる可能性があるため、このボタンは有効にしたくありません。

検証ルールは、ウィンドウが開いたときに最初から直接機能しません。

テキストボックスにフォーカスを設定し、フォーカスが失われたり、間違ったデータが入力されたりすると、検証ルールが開始され、ボタンが無効になります。

ボタンをデフォルトで無効に設定すると、開くと無効になりますが、検証エラーがない場合は有効になりません。

Loadイベントなどで検証ルールのチェックを強制することで、これを機能させることができます。

しかし、ウィンドウが最初に開いたとき、すぐに検証エラーメッセージ「すべてのフィールドに値を入力してください」が表示されますが、これは見た目があまり好きではありません。

とにかくこれを回避するか、または私は両方の世界の長所を持つことはできません。

これがボタンコードです

ありがとう、

ニール

編集2

簡単な質問。RelayCommand名前空間が見つかりませんでした。他のコードを検索すると、RelayCommand:ICommandクラスを実装するMicrosoftのMVVMの例が見つかりました。

これは正しいです?

コードは次のとおりです。

ProviderNew.xaml.csに以下を実装しました。

正直なところ、「if(!string.IsNullOrEmpty(ProviderName))」のブロックに何をコーディングする必要があるのか​​わかりません。

また、DataContextにICommandコードを追加すると言ったので、ウィンドウを開くと[保存]が有効になっていて、すべてのフィールドに正しいデータが含まれていてもクリックしても何も起こらないため、正しい場所にあるかどうかはわかりません。

これがボタンのProviderNewxamlコードです

あなたの助けは非常にありがたいです。

よろしく、

ニール

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

wpf - DataGridTextColumn 検証によるボタンの無効化/有効化

私はこれを持っていますDataGrid

ValidationRule結果によって保存ボタンを無効にして有効にしようとしています。

ただし、ValidationResultが true または false に設定されている場合、ボタンは引き続き無効になります。