2013-09-12 3 views
0

Я хочу добавить UserSontrol к ItemsControl для каждого пользователя, которого у меня есть, в моей модели viewmodel.Нет элементов, показанных в ItemsControl

Это мой MainWindow XAML с ItemsControl

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:UserControlSolution" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="UserControlSolution.MainWindow" 
    Title="MainWindow" Height="836" Width="270.5" Background="#FF232323" BorderBrush="{DynamicResource Border}" Loaded="Window_Loaded" > 

<Window.Resources> 

    <LinearGradientBrush x:Key="Border" EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
     <GradientStop Color="#FF6C6C6C" Offset="0.009"/> 
     <GradientStop Color="#FFA1A1A1" Offset="1"/> 
    </LinearGradientBrush> 
</Window.Resources> 

<StackPanel Name="Container" Margin="0,10,0,0"> 
    <ItemsControl x:Name="UserContainer" ItemsSource="{Binding allUserViewModel.Users}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <local:UserControlButton /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</StackPanel> 

кодексом позади:

using UserControlSolution.ViewModel; 
using UserControlSolution.Models; 

namespace UserControlSolution 
{ 
    public partial class MainWindow : Window 
    { 
     public AllUserViewModel allUserViewModel { get; set; } 

     public MainWindow() 
     { 
      InitializeComponent(); 
      DwmDropShadow.DropShadowToWindow(this); 

      allUserViewModel = new AllUserViewModel(); 

      allUserViewModel.AddUser(new User(1, "Robby", "Bezet")); 
      allUserViewModel.AddUser(new User(2, "Erwin", "Bezet")); 
      allUserViewModel.AddUser(new User(3, "Laurens", "Bezet")); 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      // Dock window to right side of the screen 
      AppBarFunctions.SetAppBar(this, ABEdge.Right); 

      this.DataContext = allUserViewModel; 
     } 
    } 
} 

И в ViewModel:

using UserControlSolution.Models; 

namespace UserControlSolution.ViewModel 
{ 
    public class AllUserViewModel : BaseViewModel 
    { 
     ObservableCollection<UserViewModel> _users; 

     public AllUserViewModel() 
     { 
      Users = new ObservableCollection<UserViewModel>(); 
     } 

     /// <summary> 
     /// Observable Collection of Users 
     /// Uses INotifyPropertyChange when list changes 
     /// </summary> 
     public ObservableCollection<UserViewModel> Users 
     { 
      get { return _users; } 
      set 
      { 
       if (_users != value) 
       { 
        _users = value; 
        NotifyPropertyChanged("Users"); 
       } 
      } 
     } 

     public void AddUser(User user) 
     { 
      UserViewModel userViewModel = new UserViewModel(user); 
      Users.Add(userViewModel); 
     } 

     public UserViewModel GetUser(int ID) 
     { 
      foreach (UserViewModel u in Users) 
      { 
       if(u.ID == ID) 
        return u; 
      } 

      return null; 
     } 
    } 
} 

Почему не являются там никаких пунктов показанных в ItemsControl, когда я запускаю это? Это первый раз, когда я использую ItemsControl.

+0

код UserControlButton? – ZSH

ответ

2

Меняйте ItemsSource связывание просто ItemsSource="{Binding Users}"> потому что DataContext за окном уже alluserViewmodel

+0

Вы правы, извините, глупая ошибка. –

Смежные вопросы