C# 组合框绑定不';t使用MVVM在ItemsControl中工作

C# 组合框绑定不';t使用MVVM在ItemsControl中工作,c#,mvvm,C#,Mvvm,我在ItemsControl中有一个ComboBox。我使用WPF和MVVM,我无法确定绑定到ComboBox,有人能帮我一下吗。XAML和VM如下所示: <Window x:Class="OutageManagement.Views.MarketAssignmentsView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="htt

我在
ItemsControl
中有一个
ComboBox
。我使用WPF和MVVM,我无法确定绑定到
ComboBox
,有人能帮我一下吗。XAML和VM如下所示:

    <Window x:Class="OutageManagement.Views.MarketAssignmentsView"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            mc:Ignorable="d"
            Title="Market Selection"
            WindowStartupLocation="CenterOwner"
            Width="700" Height="850"
            DataContext="{Binding MarketAssignmentsVM, Source={StaticResource Locator}}" >
      <Grid>
          <ItemsControl ItemsSource="{Binding USMarket}">
              <ItemsControl.ItemTemplate>
                 <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition></ColumnDefinition>
                            <ColumnDefinition></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Label Content="{Binding MarketName}" Height="28" 
                            HorizontalAlignment="Left" Name="lblUSMarketName"  
                            VerticalAlignment="Center" />
                        <ComboBox Grid.Column="1" Height="23" HorizontalAlignment="Left" 
                              Name="cbUSUsers" VerticalAlignment="Center" MinWidth="140"
                              ItemsSource="{Binding RelativeSource={RelativeSource 
                              AncestorType=Window}, Path=UserList}" 
                              DisplayMemberPath="UserName" 
                              SelectedValue="{Binding SelectedUserID}" 
                              SelectedValuePath="UserID"/>
                     </Grid>
                 </DataTemplate>
             </ItemsControl.ItemTemplate>
         </ItemsControl>
      </Grid>
     </Window>

视图模型:

    public class MarketAssignmentsViewModel : ViewModelBase
    {


    #region Data
    ObservableCollection<NOCUserViewModel> _userList;
    ObservableCollection<MarketAssignmentViewModel> _usMarket;
    ObservableCollection<MarketAssignmentViewModel> _caMarket;
    #endregion 

    #region Constructor
    public MarketAssignmentsViewModel()
    {
        GetUserList();
        GetMarketAssignments();
    }
    #endregion 

    #region Properties

    public ObservableCollection<NOCUserViewModel> UserList
    {
        get { return _userList; }
    }
    public ObservableCollection<MarketAssignmentViewModel> USMarket
    {
        get { return _usMarket; }
    }

    public ObservableCollection<MarketAssignmentViewModel> CAMarket
    {
        get { return _caMarket; }
    }
    #endregion

    .
    .
    .
    }
公共类MarketAssignmentsViewModel:ViewModelBase
{
#区域数据
ObservableCollection\u用户列表;
可观察的收集——美国市场;
可观测收集(caMarket);;
#端区
#区域构造函数
公共市场分配VIEWMODEL()
{
GetUserList();
GetMarketAssignments();
}
#端区
#区域属性
公共ObservableCollection用户列表
{
获取{return\u userList;}
}
公开收集市场
{
获取{return\u usMarket;}
}
公共可观测收集市场
{
获取{return\u caMarket;}
}
#端区
.
.
.
}

问题是您试图将
用户列表作为窗口的属性而不是窗口的DataContext属性来访问

修改
ItemsSource
,如下所示:

<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor
                          AncestorType=Window}, Path=DataContext.UserList}" ... />

我建议在出现绑定问题时始终查看输出窗口,您可能会看到如下情况:

<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor
                          AncestorType=Window}, Path=DataContext.UserList}" ... />

System.Windows.Data错误:40:BindingExpression路径错误:“在”“对象”“MarketAssignmentsView'(Name='')上找不到UserList”属性。

…等待XAML…为您修复,您只需要在代码和单词之间换行。非常感谢!BlachShma,它确实有效,问题是我在DisplayMemberPath中输入了错误的名称。