問題タブ [compositecollection]
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.
c# - observablecollection への変更で複合コレクションが更新されないコンボボックス
タイトルが示すように; 複合コレクションを使用して、MVVM パターンを使用して観察可能なコレクションにバインドするコンボボックスがあります。
モデルに既存のデータをロードすると、コンボボックスに値が表示されるので、バインディングが機能することがわかります。観測可能なコレクションにアイテムを追加でき、それらがデータ グリッドに表示されるので、観測可能なコレクションの通知プロパティ変更イベントが機能していることがわかります。複合コレクションが「静的リソース」をソースとして使用しているため、機能していないと思われますが、それを動的リソースに変更すると、次のエラーが発生します。
'DynamicResourceExtension' は、タイプ 'Binding' の 'Source' プロパティに設定できません。「DynamicResourceExtension」は、DependencyObject の DependencyProperty でのみ設定できます。
私は解決策を見つけるために何日も検索しましたが、他の人が同様の問題に直面している間、解決策はまだ私の問題を解決していません.
モデルのコードは次のとおりです。
私のビューモデル:
最後に、コンボボックスのビューの XAML:
よろしくお願いします。
編集:
だから私はある方向に動いた。正しいか間違っているかはまだ決定されていません。
コンボボックス自体の外にある問題を追跡したと思うので、ここでより多くのコンテキストが必要です。
コモボボックスは、タブ コントロールの 2 番目のタブにあります。各タブ項目には、独自のビュー モデルを指す独自のデータ コンテキストがあります。データは最初のタブに入力され、そのデータが 2 番目のタブのコンボ ボックスに表示されるようにします。
最初のタブにコンボボックスを配置すると、そのコンボボックスは、最初のタブに入力された監視可能なコレクションの変更で更新されます。したがって、(私が思うに) 問題は、2 番目のタブのコンボボックスが同時に 2 つの異なるビュー モデルにバインドしようとしていることです。1 つは項目のソース用で、もう 1 つは選択した値用です。
別のスレッドで、データ コンテキストに x:Reference を使用するという提案がありましたが、その正しい構文を理解できないようです。
あなたがまだこれを読んでいるなら、どんな助けも本当に感謝しています.
c# - WPF Combobox CompositeCollection bind ComboboxItem コンテンツと文字列のリスト
私は WPF を使用しており、ビューにコンボボックスがあります。私の要件は、名前のリスト (0 から n 要素の範囲) とローカライズ可能な文字列 "Dummy Name" をコンボボックスに表示することです。そこで、コンボボックスの ItemsSource を 2 つの異なるソース (「names」と呼ばれる文字列のリスト + ローカライズされた文字列「Dummy Name」) から取得します。これはすべてうまくいきます。すべての要素が適切に表示されます。WPFでの私の定義は次のとおりです。
CollectionViewSource はリソース ディクショナリの一部ですが、省略しました。問題は ComboBoxItem 要素にあります。
コンボボックスで選択すると、「Dummy Name」ではなく「Combobox: Dummy Name」という文字列が Person.LastName に割り当てられます。
コンボボックスの SelectedMemberPath 属性を「Content」に設定しても機能しません (Names の文字列に Content プロパティがないためだと思います)。
「コンボボックス:ダミー名」ではなく、コンボボックスで「ダミー名」が選択されているときに、「ダミー名」をPerson.LastNameに割り当てるにはどうすればよいですか?
c# - MenuItems の動的バインディングと静的追加 - ビュー モデル/MVVM を使用
監視可能なコレクションから MVVM を使用して動的なメニュー項目を作成しようとしています。すべてが機能しましたが、最後に「新規追加」ボタンを追加する必要がありました。次のように、CompositeCollection を使用して解決策を見つけました。
MenuItem を動的にバインドして静的に追加するにはどうすればよいですか?
そのため、TimeSpans が ViewModel のコレクションである次のコードがあります。
ただし、ItemsSource="{Binding TimeSpans}" を使用しただけのように、ビュー モデルには値が設定されず、何も表示されません。
これは、バインディングの上の StackOverflow 回答にいるため、実際には MenuItems のコレクションであるため、複合コレクションが理にかなっているためだと思われます。私はViewModelとMenuItemを混在させていますが。
XAML で ViewModels から作成されたメニュー項目のコレクションを作成してバインドできるようにする方法はありますか?
wpf - CompositeCollection を使用して ComboBox にカスタム値を追加する
私はWPFが初めてです。値を選択すると、他の 3 つのフィールド ( AbbrBlock
、MultiBrandSupplier
、IgnoreNoCompetition
) が更新され、データ ソースに従って適切な関連値が表示されるコンボ ボックスがあります。これで問題ありません。
コンボボックスにカスタム値を追加しようとすると問題が発生します。コンボボックスにはすべての値が正しく表示されますが、コンボボックスの値を変更しても他のフィールドは変更されません。
作業コードは次のとおりです (追加のカスタム コンボボックス値なし - 重要な部分に取り除かれます):
カスタム値が追加されたコードは次のとおりです。正しく表示されますが、コンボボックスの値を変更しても他のフィールドは更新されません。
ここで何が欠けていますか?
wpf - CompositeCollection 内の複数の DisplayMemberPaths?
私はWPFが初めてです。SQL Serverのビュー () からの ItemSource (StackPanel のスタイルで設定) を持つ複数のコンボボックスを含む StackPanel がありCaSupplierColumns
ます (Visual Studio はordersDataSet
、データ ソース パネルからドラッグしたリンクを自動的に作成しました)。これで問題ありません。
CompositeCollection
コンボボックス ( ) の 1 つにカスタム値を追加するために使用すると問題が発生しManufacturer
、すべての値が正しく表示され、追加された項目も表示されますが、空白です。追加されたアイテムは、コンボボックスに空白のオプションとして表示されます。
私が発見した原因は、(データベース ビューの列ヘッダーの名前) に設定されていることです。このコンボ ボックスのDisplayMemberPath
をnull に設定すると、追加された項目は実際には正しく表示されますが、コンボ ボックスの他の値は.Columns
DisplayMemberPath
System.Data.DataRowView
DisplayMemberPath
1 つの CompositeCollection に2 つの異なる を含めるにはどうすればよいですか? それとも、それを行う別の方法がありますか?
これが私の現在のXAMLです(重要な部分を残すために削除されています):