問題タブ [ivalueconverter]

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

wpf - WPF: リストボックス、値コンバーター

リストボックスで valueconverter を使用する最も簡単な方法は何ですか?

実行時に ItemSource をオブジェクトの List<> に設定し、ToString() メソッドからのテキスト文字列を表示します。しかし、私が望むのは、オブジェクトを valueconverter に渡して、まったく異なる文字列値を取得することです。

私が見つけたすべての例は、リストを xaml の何かにバインドし、スタイルとテンプレートを定義してボックス全体を再設計することを大幅に行いますが、値を変換したいだけです...

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

wpf - WPF - TextBlock のハイパーリンク用の DataTemplate/Value Converter

人の名前、電子メール、部門などのリストを表示する ListBox があります。各プロパティを表示するためのいくつかの TextBlocks を持つ DataTemplate があります。これらの TextBlocks の 1 つは、ハイパーリンクをラップして、電子メール アドレスを次のように表示します。

これは問題なく機能しますが、その人が電子メール アドレスを持っていない場合、TextBlock は自動的に折りたたまれません。そこで、値コンバーターを作成し、次のようなスタイルで使用しました (簡略化):

これは、ValueConverter を使用したスタイルです。

そして、コンバーターを呼び出すスタイルを TextBlock に追加しました。

この変更後、電子メール アドレスは表示されません。値コンバーターでは、TextBlock のテキストは常に空で、Visibility.Collapsed が返されます。ハイパーリンクが読み込まれる前に TextBlock のテキストを評価しているようなものです...

これを理解するのを手伝ってください。

ありがとう!

0 投票する
6 に答える
24597 参照

datagrid - フィールドの値を Silverlight ConverterParameter に渡す

初めての Silverlight アプリを作成しています。2 つのラベルを持つ列を持つデータグリッドがあります。ラベルについては、IValueConverter を使用してデータを条件付きでフォーマットしています。

ラベルの「コンテンツ」は次のように設定されています。

私の IValueConverterのConvertメソッドは次のとおりです。

だから私がやりたいのは、HomeScore のコンバーターで、AwayScore を ConverterParameter に渡したいのです。AwayScore の場合、HomeScore をコンバーターに渡したいのです。どちらのスコアのコンバーターでも、書式設定のために他のスコアの値を知ることができる必要があります。

しかし、ConverterParameter を別のフィールドにバインドするための構文がわかりません。
私は次のことを試しました:

しかし、それらのどれも機能していないようです。フィールド値を ConverterParameter に渡すにはどうすればよいですか?

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

formatting - 複数のフィールドに基づく条件付き書式

データグリッドのセルを条件付きでフォーマットする必要がありますが、「条件付き」部分は、データソース内のいくつかの異なるフィールド/プロパティの値に基づく必要があります。

条件付き書式設定の典型的な IValueConverter メソッドを使用して、「その他の」値を ConverterParameter を介してコンバーターに渡すことができると思いましたが、 ConverterParameter を何にもバインドできず、リテラルのみを渡すことができるようです。

複数の値に基づいて 1 つの値の条件付き書式を実行するにはどうすればよいですか?

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

silverlight - DataGrid のリストボックス DataTemplate での Silverlight の更新/トリガー IValueConverter

各レコードにはコース オブジェクトと結果オブジェクトの ObservableCollection がある、レコードの ObservableCollection にバインドされたデータグリッドを表示するアプリケーションを構築しています。

コースは、オートコンプリート ボックスを使用して変更されます。結果コレクションは、現在選択されているコースの基準に基づいて楕円テンプレートの色を変更する IValueConverter 実装を含むリストボックスに表示されます。

読み込みにはうまく機能しますが、オートコンプリートによるコース選択へのその後の更新は、値コンバーターの再計算/更新をトリガーしません。

XAML で更新をトリガーする方法はありますか。リストボックスのバインディングに UpdateSource=Property changed を追加したのですが、これでスタックオーバーフローしてしまいました(笑)。

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

オートコンプリート ボックスで LostFocus イベントをサブスクライブし、データグリッドに既にあるフィルターをリセットすることができました。しかし、これは非常に非効率的ではありませんか? データグリッドでビューを更新しても、そのメソッドには何の効果もありません。

正しい方向への一歩は大歓迎です。自分がもう灰色になるのを防ごうとしています:)

グリッド内のリストのバインディング式を取得して更新することを考えましたが、手がかりはありませんか?

みんなありがとう

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

wpf - WPF と MVVM: 実行時にデータ バインディング コンバーターを変更する

ユーザー インターフェイスで WPF と MVVM パターンを使用しています。私の ViewModel には、ミリメートル単位の距離を含むリストがあり、ListView.ItemsSource をリストにバインドして ListView に表示します。ただし、「メトリック」チェックボックスの状態に応じて、メートルまたはフィートのいずれかのより自然な単位を使用して表示される値を希望します。

私はいくつかの単純なクラス、MillimetresToMetresConverter と MillimetresToFeetConverter を作成しました。どちらも IValueConverter を実装しています。データ バインディングの Converter プロパティをどちらかに設定することはできますが、チェックボックスの状態が変化したときにこれらのコンバーターを切り替える方法がわかりません。

私の計画は、ViewModel にフィールド "IValueConverter lengthConverter" を設定して、コンバーターまたは別のコンバーターに設定し、XAML で設定することでし...="{Binding Converter={Binding Path=lengthConverter}}"た。残念ながら、Converter は依存関係プロパティではないため、これは機能しません。

実行時にデータバインディングで使用されるコンバーターを変更するにはどうすればよいですか?

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

wpf - コンバーターを App.xaml で宣言するか、ファイルごとのリソースとして宣言する必要がありますか?

WPF アプリケーションでコンバーターを宣言するときは、次のことを行う必要があります。

  1. すべてのコンバーターを App.xaml (つまり) で宣言し<Application.Resources/>て、アプリケーション全体で使用できるようにします。
  2. セクション内の各Page/ Window/ ResourceDictionary/UserControlなどに必要なコンバーターのみを宣言しますResources
  3. まったく別のもの

読みやすさに関しては、方法 1 が最善のように思えますが、私の質問はパフォーマンスに関するものです。パフォーマンス、メモリなどの点で最もリソース効率が高いのはどの方法ですか?

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

wpf - wpf datagrid observablecollection

WPF を使用して大規模なデータベース アプリケーションに取り組んでいます。これまでのところ、Sql クラスへのリンクを使用して DataContext を作成し、それを ObservableCollection に格納して、DataGrid に DataContext としてフィードすることができました。

読み書きしようとしているSQLのメインテーブルは次のようになります

DataTemplates とインライン編集を使用して、DataGrid でこれらの列を表現したい

これらすべての列と ID を含むプロキシ クラスを使用する必要がありますか? observablecollection を変更する必要がありますか、それともイベントに基づいてコード ビハインドですべてを処理する必要がありますか? 私は、データグリッドが基本的な CRUD を実行するという事実が気に入っています。これは、現時点で時間の制約があるため、実際には素晴らしいことです。

私はWPF、特にDataGridコントロールにかなり慣れていません。IValueConverters についても読んだことがありますが、これが正しい方法であるかどうか、またどのようなパフォーマンスの問題が発生する可能性があるかは正確にはわかりません。

誰かが私を正しい方向に向けることができれば、これまでのところ、私が見つけたすべての検索は、外部キーなどを使用しない単純なテーブルです.


更新
これまでにこのコードを見つけて、ある程度の進歩がありましたが、現在、問題は分類されています。

これにより、Customer_ID だけでなく「Customer Name」を表示できるようになりました。もちろん、基になるデータを整数として保持し、ユーザーが読み取り可能な説明を表示したいと考えています。今問題はソートです。これを非常にきれいに行う方法があるかどうか疑問に思っています。これは一般的なシナリオだと思いますが、解決策を見つけることに成功していません。間違った検索用語を探しているのかもしれません。

物事を単純化するために、これまでのところ私が持っているものは次のとおりです。

1.) Work_ID、Customer_ID、Employee_ID などを含む Work_Table というテーブルがあります。
2.) Customer_ID、CustomerName などを含む Customers_Table という別のルックアップ テーブルがあります。
3.) これらの列を DataGrid に表示する必要があります。 - Work_ID、CustomerName など...

私は DataGrid がバインドされている ObservableCollection を持っています。コンボボックスのアプローチを試す前は、Work_ID、Customer_ID、Employee_ID などを表示していました。基本的には、テーブル全体とその列です。

問題は、項目 3 を実行するための最良の方法は何ですか?) 必要な列のみを含むカスタム ObservableCollection に DataGrid をバインドする必要がありますか? IValueConverter は別の実行可能なソリューションなので、DataGrid が Customer_ID を表示しようとすると、代わりに CustomerName が表示されますか?

データベースを正規化するまで、この問題は発生しませんでした。