2

Comboboxユーザーがから複数のアイテムを選択できるようにする複数選択を作成していますcombobox。これまでのところ、を使用してこれを達成しましたObservableCollection<string>。このコレクションを保存できるようにしたいのですが、これを使用EntityFramework modelして、

コンストラクタ;

public EmployeeViewModel(DataObjects.Employee e) //Constructor that takes in an employee from EF
        : base("")
    {
        //BenefitsProvided = e.BenefitsProvided; //What I did previously. BenefitsProvided is the field in employee table.

        _benefits = new ObservableCollection<string>();
        string[] benefit = e.BenefitsProvided.Split(new char[] { ',' }, StringSplitOptions.None);
        foreach (var str in benefit)
        {
            _benefits.Add(str);
        }  
    }

最初の起動時に、アイテムの素敵なリストを表示できるリストが表示され、その中から好きなだけ選択できます。しかし、アイテムを編集しようとすると、ComboBoxこれが表示されます。

前;

ここに画像の説明を入力

保存後;

ここに画像の説明を入力

このリンクには、ViewModel と Bindable リストが含まれています

バインディング;

 <src:MultiComboBox Grid.Column="1" Grid.Row="9"
                         SelectionMode="Multiple" 
                         VerticalAlignment="Center"
                         DisplaySeparator=", "
                         ItemsSource="{Binding Benefits}"
                         SelectedItems="{Binding SelectedBenefits}">
 </src:MultiComboBox>

私が試したのは、aaObservableCollection<String>を取得するのではなく、そのObservableCollection<OfAClass>ようなものを取得することです。

public class CurrentBenefits
{
    private string[] _Allowed = new string[] {"items", "..."};
    public string[] Allowed 
    { 
        get { return _Allowed; }
        set { _Allowed = value; }
    }
}

しかし、そうすると、 を に変更する<string><CurrentBenefit>、コンストラクターの周りでこの例外がスローされます。

エラー 2 引数 1: 'string' から '...CurrentBenefits' に変換できません

エラー 1 'System.Collections.ObjectModel.Collection<...CurrentBenefits>.Add(...CurrentBenefits)' に最適なオーバーロードされたメソッドに無効な引数が含まれています

私が抱えているこの問題を解決するために私が何をすべきかを助けたりアドバイスしたりできますか? 前もって感謝します :)。

編集: また、このような長い質問で申し訳ありません。

4

1 に答える 1

1

私の仕事を調べた後、The WPF Room のMaverikのすばらしい助けを借りて、それは私のリポジトリに関係していました。

もともと、リポジトリ内のアイテムの挿入と更新は、そのように行われていました。

emp.BenefitsProvided = e.Benefits.ToList().ToString(); 

その後、これに変更されました。

emp.BenefitsProvided = string.Join(", ", e.SelectedBenefits);

それは完全に保存され、ユーザーが追加したものを見ることができました:)。

だったので、そのようにアイテムを表示するにはcollection、自分の中で変更する必要もありました。ListView

 <GridViewColumn Header="BenefitsProvided" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ListView Height="24"
                                    ItemsSource="{Binding Benefits}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
 </GridViewColumn>
于 2013-04-11T12:53:37.033 に答える