0

是否可以将值插入combobox数据库中的特定列?

例如,如果我有combobox项目:item1item2item3并且我想要bind它们到一些columncolumn1,我想要管理的是:如果item1被选中,当我点击时button,我想插入该项目的值column1,否则如果所选项目是item2,那么我希望将item2值插入column1等...

现在我知道这个问题写得不是很好,但我只想知道这是否可行。

我一直在谷歌搜索这类问题,但找不到解决方案。我知道怎么做column记录插入到combobox项目列表中,但不知道如何做相反的事情。

还想说我的 WPF/WCF/MVVM 应用程序中有这个问题,所以我想知道这是否可能(以及如何)以这种方式解决。

4

3 回答 3

1

你可以。在按钮单击事件中,您只需获取组合框的选定值并保存即可。

var selectedItem = ComboBoxName.SelectedItem;

但是,如果您已将组合框与对象绑定,那么您可以强制转换它。

var selectedItem = ComboBoxName.SelectedItem as (objecttypehere)

更新 我错过了您使用 MVVM。然后在视图中,您可以使用将组合框与所选项目绑定。

<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding TheSelectedItem}">
     //Itemtemplates.       
</ComboBox>

在 viewModel 中,只需访问您在我的测试用例“TheSelectedItem”属性中与选定项绑定的属性。

保存!

于 2013-06-19T13:07:46.630 回答
1

该解决方案基于 MVVM 模式。将组合框控件的 Selected 项绑定到 View 模型中的某个属性。所以你的观点应该看起来像

    <ComboBox ItemsSource="{Binding SomeItems,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True}" SelectedValue="{Binding SelectedItemBinding,UpdateSourceTrigger=PropertyChanged,NotifyOnSourceUpdated=True}" />

    <Button Command={Binding ButtonClickCommand} ..../>

因此,单击 Button 后,您将在 viewmodel 中获得 RelayCommand 句柄,并且您可以在那里有一个逻辑来获取所选项目并使用该值插入列中。您的视图模型应如下所示,

    public class ViewModel : //implement notify property changed and ICommand
    {
        public RelayCommand ButtonClickCommand
        {
             get new RelayCommand(EventHandlerToBeCalled);
        }


        public string SelectedItemBinding
        {
             get;
             set
             {
                  //notify property changed.
             }
        }

        //method called when button is clicked.
        private void EventHandlerToBeCalled()
        {
              //here set the SelectedItemBinding to a column.
        }
    }
于 2013-06-19T13:17:30.787 回答
0
  1. 在组合框中,您可以存储带有前缀的值(col1_12、col2_24 等)
  2. 在按钮单击时,您应该解析值:将它的前缀和原始值分开
  3. 因此您可以将值写入所需的列:

    switch (prefix) { case "col1" : table.column1 = value; 休息; 案例“col2”:table.column2 = 值;休息; // ETC }

于 2013-06-19T13:22:23.640 回答