为什么设计时数据没有显示在 Windows Phone 项目中?
Why does design time data not show up in Windows Phone project?
按照 this post 的建议解决方案,我仍然无法使用 ListBox
为我的 Windows Phone 应用程序显示设计时数据我的自定义类型。
XAML
<Page
x:Class="MyApp.MainPage"
...
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
DataContext="{Binding MyCommunicator.MyClass}"
<UserControl.Resources>
<myCommunicator:MyClassDesignTime x:Key="DesignViewModel"/>
</UserControl.Resources>
<ListBox x:Name="ItemsListBox" d:DataContext="{Binding Source={StaticResource DesignViewModel}}">
...
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Name"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}"/>
我的自定义类型 MyClassDesignTime
继承自 MyClass
,具有无参数构造函数和从其属性返回的静态数据(例如 Name
)。我在构建或 运行 我的应用程序时没有收到任何错误消息,但在设计期间我看不到任何数据,只有一个空白屏幕(在我的 [= 旁边的 "phone preview" window 17=]代码。
戈森格,
在我的个人实践中,在 Windows Phone/Windows Store/WPF,... 项目中提供设计时数据的最简单方法是使用 Blend 生成一些样本数据。
使用 Blend 打开您的项目。转到混合右侧的数据选项卡,创建示例 Data/New 示例数据。
然后使用您希望在数据项中找到的相同属性来设计您的设计时集合。
然后将集合从数据选项卡拖到设计视图或对象和时间轴上的控件中 window。然后将进行绑定代码。
将进行绑定:
<ListBox DataContext="{Binding Source={StaticResource FurnitureDataSource}}"
ItemsSource="{Binding Groups}"/>
然后你就可以观察你的项目了。您将有一些 .xaml 示例数据添加到您的项目中,其中包含您可以手动修改的示例数据 - 或使用数据 window 进行编辑、更改数量。
您还将添加一个代表您的数据的 class 和一个 .xsd 文件。
您可以修改生成的代码以使用您的 class,但您需要安排 xsd、文件...我不认为这是最佳做法。我更喜欢保留两个 classes :我的和 Blend 一个。
所以我的 class 在技术上会变得更复杂,示例数据将始终有效。
当我更改 属性 名称时,有时我必须在 Blend 中进行重构。
此致
按照 this post 的建议解决方案,我仍然无法使用 ListBox
为我的 Windows Phone 应用程序显示设计时数据我的自定义类型。
XAML
<Page
x:Class="MyApp.MainPage"
...
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
DataContext="{Binding MyCommunicator.MyClass}"
<UserControl.Resources>
<myCommunicator:MyClassDesignTime x:Key="DesignViewModel"/>
</UserControl.Resources>
<ListBox x:Name="ItemsListBox" d:DataContext="{Binding Source={StaticResource DesignViewModel}}">
...
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Name"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}"/>
我的自定义类型 MyClassDesignTime
继承自 MyClass
,具有无参数构造函数和从其属性返回的静态数据(例如 Name
)。我在构建或 运行 我的应用程序时没有收到任何错误消息,但在设计期间我看不到任何数据,只有一个空白屏幕(在我的 [= 旁边的 "phone preview" window 17=]代码。
戈森格,
在我的个人实践中,在 Windows Phone/Windows Store/WPF,... 项目中提供设计时数据的最简单方法是使用 Blend 生成一些样本数据。
使用 Blend 打开您的项目。转到混合右侧的数据选项卡,创建示例 Data/New 示例数据。
然后使用您希望在数据项中找到的相同属性来设计您的设计时集合。
然后将集合从数据选项卡拖到设计视图或对象和时间轴上的控件中 window。然后将进行绑定代码。
将进行绑定:
<ListBox DataContext="{Binding Source={StaticResource FurnitureDataSource}}"
ItemsSource="{Binding Groups}"/>
然后你就可以观察你的项目了。您将有一些 .xaml 示例数据添加到您的项目中,其中包含您可以手动修改的示例数据 - 或使用数据 window 进行编辑、更改数量。
您还将添加一个代表您的数据的 class 和一个 .xsd 文件。
您可以修改生成的代码以使用您的 class,但您需要安排 xsd、文件...我不认为这是最佳做法。我更喜欢保留两个 classes :我的和 Blend 一个。
所以我的 class 在技术上会变得更复杂,示例数据将始终有效。
当我更改 属性 名称时,有时我必须在 Blend 中进行重构。
此致