DataGridComboBoxColumnをビューモデルコレクションにバインドできません

ユーザー名

アイテムのコレクションを含むビューモデルがあり、各アイテムにはキーのコレクションがあります。DataGridComboBoxColumnを作成して、各アイテムのキーのドロップダウンリストを表示したいと思います。私は同様の質問を見ましたが、答えのどれも私を助けませんでした。アプリケーションを実行すると、すべてのコンボボックスが空になります。これが私のxamlです:

<Window
    x:Class="TestDataGridCombobox.MyWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}"/>
            <DataGridComboBoxColumn ItemsSource="{Binding Path=Keys}" SelectedValueBinding="{Binding Path=SelectedKey}"/>
        </DataGrid.Columns>
    </DataGrid>
</Window>

そして、これが私のビューモデルです:

using System.Collections.ObjectModel;
using System.ComponentModel;

namespace TestDataGridCombobox
{
    public class MyViewModel : INotifyPropertyChanged
    {
        public MyViewModel()
        {
            Items.Add(new MyItem { Name = "Item1" });
            Items.Add(new MyItem { Name = "Item2" });
            Items.Add(new MyItem { Name = "Item3" });
        }

        private ObservableCollection<MyItem> items = new ObservableCollection<MyItem>();        
        public ObservableCollection<MyItem> Items
        {
            get { return items; }
            set
            {
                if (items == value)
                    return;
                items = value;
                OnPropertyChanged("Items");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string property)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
        }
    }

    public class MyItem : INotifyPropertyChanged
    {
        public MyItem()
        {
            Keys.Add("Key1");
            Keys.Add("Key2");
            Keys.Add("Key3");
            SelectedKey = "Key1";
        }

        private string name;
        public string Name
        {
            get { return name; }
            set
            {
                if (name == value)
                    return;
                name = value;
                OnPropertyChanged("Name");
            }
        }

        private string selectedKey;
        public string SelectedKey
        {
            get { return selectedKey; }
            set
            {
                if (selectedKey == value)
                    return;
                selectedKey = value;
                OnPropertyChanged("SelectedKey");
            }
        }

        private ObservableCollection<string> keys = new ObservableCollection<string>();
        public ObservableCollection<string> Keys
        {
            get { return keys; }
            set
            {
                if (keys == value)
                    return;
                keys = value;
                OnPropertyChanged("Keys");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string property)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
        }
    }
}

そして、ビューモデルは次のようにウィンドウにバインドされます。

public partial class MyWindow : Window
{
    public MyWindow()
    {
        InitializeComponent();
        DataContext = new MyViewModel();
    }
}

テンプレート化された列を使用することもできますが、この特定の例が機能しない理由に興味があります。コードに問題はありますか?または、DataGridComboBoxColumnに制限はありますか?

ヴィック

または、制限はありますDataGridComboBoxColumnか?

はい、いくつかの制限があります。それらは、DataGridComboBoxColumnクラスのドキュメントの備考」セクションを読むことで見つけることができます

ドロップダウンリストにデータを入力するには、最初に次のいずれかのオプションを使用して、ComboBoxのItemsSourceプロパティを設定します。

この問題を解決するための多くの回避策がありますたとえば、あなたが書いたように、DataGridTemplateColumnを使用できます

お役に立てば幸いです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ビューモデル内のコレクションをモデルバインドできません

分類Dev

コレクションをRazorPagesのページモデルにバインドできますか?

分類Dev

RxSwiftはデータをカスタムコレクションビューセルにバインドしません

分類Dev

ビューモデルのコレクションをWPFMVVMTabControlにバインドする

分類Dev

SilverlightでコレクションをComboBoxにバインドできません

分類Dev

バックボーン-シンプルなコレクションビュー-アイテムを印刷できません

分類Dev

モバイルビューでナビゲーションバーを表示できません

分類Dev

モバイルビューでナビゲーションバーを作成できません

分類Dev

heightAnchorが原因で、コレクションビューを垂直方向にスクロールできません

分類Dev

ユーザー コントロールをビュー モデル プロパティにバインドできませんでした

分類Dev

レルム:モジュールは古いバージョンのコンパイラによって作成され、Objective-cモジュールをビルドできませんでした

分類Dev

IsSynchronizedWithCurrentItemを使用したビューモデルのコレクションへのバインド

分類Dev

Laravel:編集ビューでフィールドにデータを入力しようとしているときに、プロパティ[名前]がこのコレクションインスタンスに存在しません

分類Dev

グリッドをビューモデルにバインドできません-グリッドにデータが表示されません

分類Dev

SAPUI5計画カレンダ-xmlビューの予定をモデルの予定にバインドできません

分類Dev

プレースホルダービューをデクラレーションできません

分類Dev

アイテムのコレクションを2列のリストビューボックスにロードできません

分類Dev

ビューモデル間でコレクションに変更を通知

分類Dev

モバイルビューでdivコンテンツを中央に配置できません

分類Dev

ASP.NET MVCは、チェックボックスにバインドされたビューモデルをPOSTできません

分類Dev

Xcodeでコレクションビューから詳細ビューにデータを渡すことができません

分類Dev

iOSのバンドルからドキュメントディレクトリにファイルをコピーできません

分類Dev

モデルにアテンションレイヤーがある場合、Model.get_config()からkerasにモデルをロードできません

分類Dev

ReactiveUI wpfを使用すると、ビューモデルからビュー内のコンボボックスに列挙値のリストをバインドできません

分類Dev

JPQL:フィールドパスをコレクションタイプに解決できません

分類Dev

UI にコレクション ビューを表示しようとしましたが、表示できません。

分類Dev

コレクションビューにフッターを追加できません

分類Dev

ブートストラップ3.3.2ナビゲーションバーのドロップダウンメニューの切り替えは、モバイルまたはデスクトップではクリックできません

分類Dev

Repast:インストールビルダーを介してスタンドアロンJARを使用してシミュレーションモデルを実行することはできません

Related 関連記事

  1. 1

    ビューモデル内のコレクションをモデルバインドできません

  2. 2

    コレクションをRazorPagesのページモデルにバインドできますか?

  3. 3

    RxSwiftはデータをカスタムコレクションビューセルにバインドしません

  4. 4

    ビューモデルのコレクションをWPFMVVMTabControlにバインドする

  5. 5

    SilverlightでコレクションをComboBoxにバインドできません

  6. 6

    バックボーン-シンプルなコレクションビュー-アイテムを印刷できません

  7. 7

    モバイルビューでナビゲーションバーを表示できません

  8. 8

    モバイルビューでナビゲーションバーを作成できません

  9. 9

    heightAnchorが原因で、コレクションビューを垂直方向にスクロールできません

  10. 10

    ユーザー コントロールをビュー モデル プロパティにバインドできませんでした

  11. 11

    レルム:モジュールは古いバージョンのコンパイラによって作成され、Objective-cモジュールをビルドできませんでした

  12. 12

    IsSynchronizedWithCurrentItemを使用したビューモデルのコレクションへのバインド

  13. 13

    Laravel:編集ビューでフィールドにデータを入力しようとしているときに、プロパティ[名前]がこのコレクションインスタンスに存在しません

  14. 14

    グリッドをビューモデルにバインドできません-グリッドにデータが表示されません

  15. 15

    SAPUI5計画カレンダ-xmlビューの予定をモデルの予定にバインドできません

  16. 16

    プレースホルダービューをデクラレーションできません

  17. 17

    アイテムのコレクションを2列のリストビューボックスにロードできません

  18. 18

    ビューモデル間でコレクションに変更を通知

  19. 19

    モバイルビューでdivコンテンツを中央に配置できません

  20. 20

    ASP.NET MVCは、チェックボックスにバインドされたビューモデルをPOSTできません

  21. 21

    Xcodeでコレクションビューから詳細ビューにデータを渡すことができません

  22. 22

    iOSのバンドルからドキュメントディレクトリにファイルをコピーできません

  23. 23

    モデルにアテンションレイヤーがある場合、Model.get_config()からkerasにモデルをロードできません

  24. 24

    ReactiveUI wpfを使用すると、ビューモデルからビュー内のコンボボックスに列挙値のリストをバインドできません

  25. 25

    JPQL:フィールドパスをコレクションタイプに解決できません

  26. 26

    UI にコレクション ビューを表示しようとしましたが、表示できません。

  27. 27

    コレクションビューにフッターを追加できません

  28. 28

    ブートストラップ3.3.2ナビゲーションバーのドロップダウンメニューの切り替えは、モバイルまたはデスクトップではクリックできません

  29. 29

    Repast:インストールビルダーを介してスタンドアロンJARを使用してシミュレーションモデルを実行することはできません

ホットタグ

アーカイブ