您需要設計時間數據。您可以使用d:DataContext屬性聲明設計時數據上下文。您可以創建模擬類,爲您的設計師展示模擬列表,以便在設計時顯示。
<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="WpfAnswer001.Window1"
d:DataContext="{StaticResource ResourceKey=MockMasterViewModel}"
Title="Window1" d:DesignWidth="523.5">
<Grid>
<ListBox ItemsSource="{Binding Path=Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="4">
<TextBlock Text="{Binding Title}" />
<TextBlock Text="{Binding Address}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
這是你如何申報的App.xaml模擬視圖模型:
<Application x:Class="WpfAnswer001.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfAnswer001"
StartupUri="Window1.xaml">
<Application.Resources>
<local:MockMasterViewModel x:Key="MockMasterViewModel"/>
</Application.Resources>
</Application>
這是模擬視圖模型的代碼看起來像:
using System.Collections.ObjectModel;
public class MockItemViewModel
{
public string Title { get; set; }
public string Address { get; set; }
}
public class MockMasterViewModel
{
public ObservableCollection<MockItemViewModel> Items { get; set; }
public MockMasterViewModel()
{
var item01 = new MockItemViewModel() { Title = "Title 01", Address = "Address 01" };
var item02 = new MockItemViewModel() { Title = "Title 02", Address = "Address 02" };
Items = new ObservableCollection<MockItemViewModel>()
{
item01, item02
};
}
}
這是它如何在Visual Studio中顯示:
這是值得的努力和編碼?這取決於你,但這是應該如何完成的。
否則,放上一個空白的設計器,只在運行時測試。
當您使用Expression Blend進行大量工作並確實需要了解項目的外觀時,這非常有用。
這是否意味着我需要爲我的每個視圖模型創建接口?當我沒有IoC容器時,這是如何工作的? – 2014-12-07 06:25:07
我已經添加了更多關於如何在沒有IoC的情況下執行此操作的詳細信息,無需接口。 – Murven 2014-12-07 06:59:20
謝謝你的幫助。它現在有效! – 2014-12-07 07:34:51