使用WPF和MVVM设置数据绑定时出现问题

时间:2013-03-01 21:18:37

标签: c# wpf data-binding mvvm viewmodel

我有一个使用MVVM的应用程序。我正在尝试通过将其连接到我的ViewModel中的属性来为我的ComboBox设置数据绑定。当我运行应用程序时,我收到此错误消息:

Message='Provide value on 'System.Windows.Data.Binding' threw an exception.' Line number '11' and line position '176'.

此行XAML出现问题:

<ComboBox x:Name="schoolComboBox" HorizontalAlignment="Left" Margin="25,80,0,0" VerticalAlignment="Top" Width="250" FontSize="16" ItemsSource="{Binding LocationList}" SelectedItem="{Binding Source=LocationPicked}" />

以下是我正在尝试使用的ViewModel。

using QMAC.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Windows;

namespace QMAC.ViewModels
{
  class MainViewModel : ViewModelBase
  {
    Address address;
    Location location;
    private string _locationPicked;

    public MainViewModel()
    {
        address = new Address();
        location = new Location();
    }

    public List<string> LocationList
    {
        get { return location.site; }
        set
        {
            OnPropertyChanged("LocationList");
        }
    }

    public string LocationPicked
    {
        get { return _locationPicked; }
        set
        {
            _locationPicked = value;
            MessageBox.Show(_locationPicked);
            OnPropertyChanged("LocationPicked");
        }
    }
  }
}

我是否错误地设置了属性以使其与数据绑定一起使用?

1 个答案:

答案 0 :(得分:3)

您没有正确绑定SelectedItem。您需要在绑定上设置Path而不是Source。我假设您已将datacontext设置为MainViewModel。由于LocationPicked属性位于MainViewModel中,因此您无需设置Binding.Source。更改绑定以使用{Binding LocationPicked设置SelectedItem上的路径。