0

私はComboBoxinを持っています。私はItemsControlWPFと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>

ViewModel:

    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

    .
    .
    .
    }
4

1 に答える 1

1

UserList問題は、ウィンドウのDataContextのプロパティではなく、ウィンドウのプロパティとしてにアクセスしようとしていることです...

次のItemsSourceように変更します。

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

バインディングの問題がある場合は、常に[出力]ウィンドウを確認することをお勧めします。おそらく次のようなものが表示されます。

System.Windows.Data Error: 40 : BindingExpression path error: 'UserList' property not found on 'object' ''MarketAssignmentsView' (Name='')'.

于 2013-03-13T20:59:34.470 に答える