如何以编程方式从viewmodel中选择listview项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以编程方式从viewmodel中选择listview项?相关的知识,希望对你有一定的参考价值。

我有一个MVVM应用程序,其中MainWindowViewModel连接到MainWindowview。 在MainWindow视图中,我有一个包含股票代码的ComboBox

我有另一个视图模型和名为AllStockQuoteViewModel的视图连接到AllStockQuoteView,其中包含一系列股票及其价格。

我希望能够从ComboBox中选择一个项目,并选择并突出显示AllStockQuoteView中的项目。在我的MainWindowViewModel上我已经保存了对AllStockQuoteViewModel的引用并用它来调用一个方法来找到ObservableCollection中绑定到AllStockQuoteView的股票代码符号,但是还没有找到一种方法以编程方式选择AllStockQuoteView上的项目。

我在SelectedQuote上有一个AllStockQuoteViewModel属性绑定到AllStockQuoteView的列表视图,我可以选择其中一个项目,我的SelectedQuote属性设置正常。如果我在我的SelectQuote方法中以编程方式设置它,它看起来好像在视图中选择了项目,尽管该项目被传递回MainWindowViewModel并且我可以使用它来填充MainWindow视图上的文本块。

我希望能够通过突出显示选择AllStockQuoteView上的项目,就像用户选择它一样。

如何才能做到这一点?

答案

它很容易实现

在视图模型中需要两件事物对象列表和选定的项目属性

        private CustomObject _selectedCustomObject;

        public ObservableCollection<CustomObject> CustomObjects
        {
            get
            {
                return new ObservableCollection<CustomObject>();
            }
        }

        public CustomObject SelectedCustomObject
        {
            get { return _selectedCustomObject; }
            set
            {
                if (_selectedCustomObject== value)
                {
                    return;
                }

                _selectedCustomObject= value;
                PropertyChanged.Raise(this, x => x.SelectedCustomObject);
            }
        }

然后在您的视图中添加List / Combo控件并绑定到这两个属性。

<ListView ItemsSource="{Binding CustomObjects}"
          SelectedItem="{Binding SelectedCustomObject}">

然后,您需要做的就是设置viewmodel属性,视图将更新。

另一答案

首先你必须考虑你的模型和整个MVVM方法,一个很好的起点是http://blogs.msdn.com/b/kashiffl/archive/2010/11/14/mvvm-technical-description.aspx

在您可以通过不同方式实现您的功能之后,可以实现像Observer Pattern之类的东西,或者尝试使用像Notify Property-Changed-Events这样的方法。

希望我能够提供帮助,

问候

以上是关于如何以编程方式从viewmodel中选择listview项?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式从“recyclerView”适配器中选择底部导航菜单?

如何以编程方式从控件自己的更改事件中更改选择框选择并使其在移动浏览器中工作

如何使用ajax以编程方式在嵌套模式对话框中更改引导选择2中的默认选择选项?

如何使用 MVVM 应用程序在 WPF 中以编程方式设置 DataGrid 的选定项?

如何以编程方式使文本可选择并提供弹出菜单以转到另一个应用程序

如何以编程方式将数据从表视图控制器传递到另一个控制器? [复制]