0

ウィンドウの一部をコードで作成しています。コンボボックスの場合、私はこれを行います:

ObservableCollection<ParamClassOption> options = new ObservableCollection<ParamClassOption>(
context.ParamClassOptions.Where(x => x.IDParamClass == val.CompTypeParam.IDParamClass));

ComboBox combobox = new ComboBox();
combobox.Name = "combobox" + val.CompTypeParam.ParameterName.Replace(" ", "");
combobox.ItemsSource = options;
combobox.SelectedValuePath = "IDParamClass";
combobox.DisplayMemberPath = "OptionName";
if (val.ParamClassOption != null)
{ 
  combobox.SelectedValue = val.ParamClassOption.IDParamClassOption; 
}
layoutitem.Content = combobox;

リストからアイテムを選択してデータベースに保存できます。私が抱えている問題は、データベースから値を取得するときに、保存された値を再度表示することです。なぜそれが表示されないのですか?上記の最後から 2 行目の val.ParamClassOption.IDParamClassOption は、レコードが取得されて表示されるときの正しい値です。

4

2 に答える 2

0

選択した値をバインドするのを忘れたと思います

var binding = new Binding {Path = new PropertyPath("IDParamClassOption"), Mode = BindingMode.TwoWay, Source = val.ParamClassOption};
combobox.SetBinding(ComboBox.SelectedValueProperty, binding);

お役に立てれば

于 2012-07-02T07:51:41.863 に答える
-1

助けてくれてありがとう。アイテムをコンボボックスに1つずつ追加するという、まったく異なるアプローチを使用することになりました。次に、選択した項目を以前に追加した値に設定します (Text プロパティを使用)。私のコードは次のようになります。

            if (controlType == "Combobox")
            {
                ComboBox combobox = new ComboBox();
                combobox.Name = "combobox" + val.CompTypeParam.ParameterName.Replace(" ", "");

                ObservableCollection<ParamClassOption> options = new ObservableCollection<ParamClassOption>(
                    context.ParamClassOptions.Where(x => x.IDParamClass == val.CompTypeParam.IDParamClass));
                combobox.Items.Clear(); 
                foreach (ParamClassOption option in options)
                {
                    ComboBoxItem item = new ComboBoxItem();
                    item.Content = option.OptionName;
                    combobox.Items.Add(item);
                }
                combobox.Text = val.ParamClassOption.OptionName;

                layoutitem.Content = combobox;
            }

後でコンボボックスから値を読み取ってデータベースに保存するときに、次のようにしました。

ObservableCollection<ParamClassOption> option = new ObservableCollection<ParamClassOption>(
    context.ParamClassOptions.Where(o => o.IDParamClass == value.CompTypeParam.IDParamClass).Where(o => o.OptionName == combobox.Text));
value.IDParamClassOption = option[0].IDParamClassOption;
于 2012-07-03T05:42:09.500 に答える