問題タブ [valueconverter]

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 に答える
371 参照

wpf - コンボボックスの選択に基づく監視可能なコレクションの更新

したがって、「Class1」というアイテムの ObservableCollection があり、Class1 には「ID」という名前のプロパティがあります。

WPFToolkit のデータグリッドを使用して、このコレクションにバインドします。データグリッド内にはコンボボックス列があり、その ItemsSource をクラスの ID プロパティにバインドします。

この時点で、すべてが正常であり、すべてが正常に読み込まれます。私がやりたいことは、ComboBox で選択された値を反映するように ObservableCollection を変更することです。

次のように、ValueConverter を ComboBox の SelectedItemBinding にバインドしています。

コレクションを変更するのに最適な方法 (つまり、WPF が承認した方法) は何ですか? IDConverter ConvertBack() メソッドが呼び出されると、適切な Class1 インスタンスを取得しますが、ValueConverter 内から Observable コレクションにアクセスできず、Datagrid から SelectedIndex 値にもアクセスできません。

コレクションへのポインターを持つ静的リソースとしてクラスを作成し、それを ConverterParameter として渡すこともできますが、それはちょっとばかげているように思えます。

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

c# - ConvertorParameter をバインドする方法

ConverterParameter の値をバインドしようとしています。現在、それはトリッキーすぎると感じています...

コードビハインド

カバーフロー タイプ コントロールのデータ テンプレートの一部を形成する TextBox の XAML。

私がどこで間違っているのか誰にもわかりますか?

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

c# - DataContextスイッチの後にValueConverterを使用する

ValueConverterインスタンス化された後(デフォルトのコンストラクターを介して、のみを呼び出すInitializeComponents())、別のDataContext、具体的にはViewModelのインスタンスが与えられるクラスで小さなカスタムを試してみたいと思います。

StaticResource内での使用Bindingはまったく機能しません(を生成します)。それNullReferenceException以降、DataContextは変更されているためです(もうありませthisん)。

私は電話のDataContext = this;前に置いてみましたが、変更はありません。このギズモInitializeComponentsを調べる必要がありますか(この記事で説明されています)?MarkupExtension

Value Converterまた、ViewModel(現在)内にカスタムのインスタンスを作成しようとしましたが、DataContextどちらも役に立ちません。

私はいつでも追加の詳細を提供することができます。前もって感謝します !

TextBlock内にContextMenuを表示しようとしています。ContextMenuには、唯一のMenuItemが含まれています。MenuItemのヘッダーは、たとえば「設定」にすることができます。上記のMenuItemの子(MenuItemとしてもレンダリングされる)はEnumに由来するため、MenuItemのItemsSourceになります。

これですべてがうまく表示されますが、デフォルトの設定がすでに存在するため、デフォルトごとに子の1つ(列挙型のメンバーなど)を選択するようにしています。さらなる背景情報は私の他の質問で見つけることができます。

編集

私は今、それが恐ろしいContextMenuであることに気づきました。それが問題ですね。

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

silverlight - ValueConverter で ConverterParameter への入力として分離コード変数を使用する方法

ItemsSource を WCF サービスから取り込まれた CollectionViewSource に設定する ListBox があります。ListBox.ItemTemplate\DataTemplate の値コンバーターを使用して、ItemsSource のオブジェクトのプロパティを変換します。

これはすべて期待どおりに機能しますが、別のプロパティが特定の値に等しい場合を除いて、変換された値が個々のオブジェクト プロパティ値に基づくように、変換プロセスを更新する必要があります。その値は、xaml のコード ビハインドで設定されます。これは、ページ コンストラクターで設定されるフィールド レベルの変数です。

これを行うには、フィールド レベル変数を ValueConverter の ConverterParameter として渡します。私は主にこのこの質問のアイデアを使用していくつかの方法を試しましたが、xaml の解析中に常にエラーが発生します (そしてアプリの読み込みに失敗します)。

修正の 1 つは、ItemsSource のオブジェクトにプロパティを追加することかもしれませんが、実際にはそうしたくありません。部分的には、そのオブジェクトがいくつかのプロジェクトで使用されているため、i を変更したくないためです....そして、他の方法が可能かどうかを確認したいからです。また、wpfにはMultiValue Converter(およびおそらくSL 4.0)があると思いますが、SL 3.0を使用しています。

私の推測では、これまでに発生した問題は、xaml の読み込み、バインド、および解析のタイミングによるものです。

いくつか質問があります:

  • 上記のようにこれを行うことはできますか?
  • そうでない場合、問題は何ですか?
  • そうでない場合、オブジェクトにプロパティを追加しない別の方法はありますか?
0 投票する
1 に答える
509 参照

c# - リストボックス項目として使用されている場合、ユーザーコントロール内で値コンバーターがトリガーされません

WPF リスト ボックスを表示するには、リスト ボックス項目としてユーザー コントロール (MessageRowTemplate) を使用します。ユーザー コントロールは値コンバーター (MessageTypeToBrushConverter) を使用します。何らかの理由で、値コンバーターは、ユーザー コントロールがリスト ボックス項目として使用されず、別の場合にのみトリガーされます。

リスト ボックス項目としてリスト ボックス内で個別に使用されるユーザー コントロールを含む xaml ファイル:

MessageRowTemplate.xaml は次のとおりです。

ご想像のとおり、値コンバーターは値をブラシに変換する役割を果たします。これはうまくいき<local:MessageRowTemplate x:Name="questionControl" />ますが、リストボックスの項目ではうまくいきません。

Google は、「リスト ボックス」、「リスト ボックス アイテム」、「ユーザー コントロール」、「値コンバーター」のキーワードの組み合わせについて、何のヒントも与えてくれませんでした。

アイデアはありますか?

よろしくお願いします。

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

wpf - ValueConverter の ContentProperty としての ResourceDictionary

列挙型をアイコンに変換するには、次のような値コンバーターを使用します。

XAML で次のように使用します。

アプリケーションを起動すると、すべて正常に動作し、コンバーターは値の名前を変換し、そのキーによって ResourceDictionary からアイコンを取得します。しかし、私のデザイナーでは、Visual Studio 2010 は常に不平を言っています。

これはうざいです!何か案が?列挙型を XAML アイコン リソースに変換するためのより簡単なソリューションはありますか?

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

wpf - イメージを SQL CE から WPF イメージにロードするこれら 2 つの方法で異なる結果が生じるのはなぜですか?

で、 (SQL CE イメージ) をValueConverterに変換しようとしていました。この方法は機能します (画像はフォームに正しく表示されます):System.Data.Linq.BinaryBitmapImage

このメソッドは機能しません(ただし、奇妙なことに、例外はスローされません)。

優れたプログラミングの実践では、作成したストリームはすべて破棄する必要があると述べられています...そのため、2番目の方法が機能しないのに最初の方法は機能する理由がわかりません。洞察はありますか?

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

c# - バリューコンバーター。WPFに1回だけ呼び出すように強制します

次のコードがあるとしましょう:

したがって、Converter以外のバインディング情報を指定しませんでした... WPFに1回だけ呼び出すように強制することは可能ですか?

UPD:現時点では、値コンバーターの状態を静的フィールドに保存しています

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

wpf - テキストボックスの ValidationRule と値コンバーターの組み合わせ

良い解決策が見つからない単純な問題があります。double プロパティ値にバインドされたテキスト ボックスがあります。ユーザーはテキスト ボックスに値を入力できますが、0 から 100 までの値のみを許可したいと考えています。 )。ユーザーがテキストボックスから離れた場所をクリックした場合、UpdateSourceTrigger="LostFocus" の値コンバーターを使用して値を固定したいと考えています。

検証ルールまたはコンバーターを実行するのは簡単ですが、UpdateSourceTrigger="PropertyChanged" で検証をトリガーし、UpdateSourceTrigger="LostFocus" でコンバーターをトリガーする必要があるため、それらを組み合わせることができません。残念ながら、TextBox.Text でバインディングを設定するときは、どちらかしか選択できません。

この機能を実装する方法について何か良いアイデアはありますか?

ありがとうございました

/ピーター

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

c# - ビューモデルからのデータを必要とするWPFValueConverterを実装するにはどうすればよいですか?

ビューモデルと、このビューモデルからのデータを表示するユーザーコントロールを備えたアプリケーションを作成しています。ビューモデルにはエンティティ「Appointment」が含まれ、それらのアポイントメントにはプロパティ「UserName」があります。

アポイントメントを表示するときに、値コンバーターを使用してユーザーの色を取得したいのですが(「UserName」に応じて)、色はエンティティ「Appointment」に含まれていないため、値を作成したかった-ビューモデルのエンティティ「User」を使用するコンバーター。

コンバーター内のビューモデルから別のエンティティを使用するための最良の方法は何ですか?

ユーザーコントロールからビューモデルにアクセスすることは可能ですか?コンバーターをviewmodel-class内に配置しようとしましたが、ユーザーコントロールからこのクラスにアクセスできますか?

次の可能性が機能する可能性があることがわかりました。

  1. 各予定に色も含まれるようにビューモデルを調整します。しかし、ビューモデルをいじりたくないので、これはしたくありません。

  2. 起動時にビューモデルも含むクラスからconverter-parameterを設定します。(これは機能しますか?)

  3. x:Referenceを使用して、コンバーターパラメーターをコンパイル時に不明なビューモデルにデータバインドします(これは可能ですか?)