2013-04-02 11 views
5

Mam prosty model widoku, który ma listę jednostek w nim, to pokazuje dobrze w czasie wykonywania, ale chciałbym, aby lista wyświetlała się w czasie projektowania. Jak w przypadku niektórych pytań próbowałem następujące, ale to nie działa, czy ktoś może pomóc?Projekt WPF Czas Zobacz model

//In resources 
<local:MainViewModel x:Key="DesignViewModel"/> 

Presenter

<ItemsControl ItemsSource="{Binding Units}" d:DataContext="{Binding Source={StaticResource DesignViewModel}}" Background="Transparent"> 

Widok modelu

public MainViewModel() 
    { 
     Units = new ObservableCollection<UnitViewModel>(); 
     Units.Add(new UnitViewModel 
     { 
      ID = "1", 
      Degrees = "80", 
      IsMaster = true 
     }); 
     for (int i = 0; i < 10; i++) 
      Units.Add(new UnitViewModel 
      { 
       ID = "2", 
       Degrees = "40", 
       IsMaster = false 
      }); 
    }   
} 
+1

wygląda OK. czy próbowałeś odświeżyć widok? czy jest poprawnie wyświetlany w czasie wykonywania? – Nahum

Odpowiedz

5

można udostępnić definicję kodu dla UnitViewModel? Pamiętaj, że Wiązania działają tylko na właściwościach, a nie na otwartych polach. Wypróbowałem twój kod i utworzyłem kilka podstawowych pól strukturalnych dla Jednostek. Te nie działały. Zgaduję, że może używasz pól zamiast właściwości:

public class MainViewModel 
    { 
     public MainViewModel() 
     { 
      Units = new ObservableCollection<UnitViewModel>(); 
      Units.Add(new UnitViewModel 
      { 
       ID = "1", 
       Degrees = "80", 
       IsMaster = true 
      }); 
      for (int i = 0; i < 10; i++) 
       Units.Add(new UnitViewModel 
       { 
        ID = "2", 
        Degrees = "40", 
        IsMaster = false 
       }); 
     } 

     public ObservableCollection<UnitViewModel> Units { 
      get; 
      set; 
     } 
    } 


    public struct UnitViewModel 
    { 
     public string ID { get; set;} 
     public string Degrees { get; set;} 
     public bool IsMaster { get; set;} 

    } 

} 

Próbowałem tego kodu na moim końcu i nie miałem żadnych problemów.

<Window 
     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" x:Class="WpfApplication1.MainWindow" 
     xmlns:local="clr-namespace:WpfApplication1" 
     Title="MainWindow" d:DesignWidth="704"> 
    <Window.Resources> 
     <local:MainViewModel x:Key="DesignViewModel" /> 
     <DataTemplate x:Key="DataTemplate2"> 
      <Grid > 
       <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding ID}" VerticalAlignment="Top"/> 
      </Grid> 
     </DataTemplate> 
    </Window.Resources> 
    <Grid d:DataContext="{StaticResource DesignViewModel}"> 
     <ItemsControl HorizontalAlignment="Left" Height="450" VerticalAlignment="Top" Width="632" ItemsSource="{Binding Units}" 
      /> 
    </Grid> 
</Window> 

Dodaj ItemTemplate, aby właściwie ustawić reprezentację danych.