Вы можете указать данные во время разработки через Blend или (чтобы они работали и в VS) сделать это:
- Создайте подкласс объекта, который вы указали в качестве DataContext.
- В конструкторе этого подкласса установите свойства для некоторых тестовых значений.
- Объявление экземпляра подкласса как ресурса.
- Установите DataContext для этого ресурса.
- Не забудьте очистить или установить для DataContext что-то разумное во время выполнения, в противном случае пользователи увидят ваши данные времени разработки.
Работает и в Silverlight.
Вот пример кода:
// The object (in a list) that'll be bound as our ListBox ItemsSource
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
// Our design-time data. Note that we add list items in the constructor
public class PersonDesignTimeData : ObservableCollection<Person>
{
public PersonDesignTimeData()
{
this.Add(new Person { FirstName = "Fred", LastName = "Smith" });
this.Add(new Person { FirstName = "Jim", LastName = "Brown" });
this.Add(new Person { FirstName = "Dave", LastName = "Jones" });
}
}
Window1.xaml:
<Window x:Class="DesignTimeDataDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DesignTimeDataDemo"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<local:PersonDesignTimeData x:Key="PersonDesignTimeData"/>
</Window.Resources>
<Grid x:Name="root" DataContext="{StaticResource PersonDesignTimeData}">
<ListBox
ItemsSource="{Binding}"
>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="200">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding FirstName}"/>
<TextBlock Grid.Column="1" Text="{Binding LastName}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>