出于测试目的,我在DLL中编写了一个Silverlight自定义控件,该控件仅包含一个包含ListBox的Grid,预先填充了2个项。 (仅供参考:在这个项目中,我只有2个文件:BaseLayout.cs和Generic.xaml。)
然后,在另一个项目中,我将此自定义控件放在我的MainPage.xaml:
上<UserControl x:Class="Test.MainPage"
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"
xmlns:base="clr-namespace:Base;assembly=Base"
mc:Ignorable="d"
d:DesignHeight="427"
d:DesignWidth="508">
<base:BaseLayout x:Name="MyLayout"
ListBoxBg="BlanchedAlmond" />
</UserControl>
我知道如何使用TemplateBinding更改ListBox的背景颜色 我也知道如何在运行时向这个ListBox添加项目。
但是在XAML中是否可以在设计时添加项目? 有没有办法允许这样的事情:
<base:BaseLayout x:Name="MyLayout"
ListBoxBg="BlanchedAlmond">
<ListBoxItem Content="Item 4" />
<ListBoxItem Content="Item 5" />
</base:BaseLayout>
欢迎任何建议。
编辑:更确切地说,我希望能够从两个地方在我的ListBox中添加一些项目:
我希望所有这些项目都能在运行时保留。
答案 0 :(得分:1)
如果您正在使用mvvm,这意味着您的视图包含此BaseLayout
视图模型,您可以创建一个设计时视图模型,在那里编写示例数据并在视图中包含这样的内容,
<Grid x:Name="LayoutRoot" d:DataContext="{d:DesignInstance design:DesignMainViewModel, IsDesignTimeCreatable=True}">
<base:BaseLayout x:Name="MyLayout" ListBoxBg="BlanchedAlmond"/>
有关详细信息,请参阅this post。
此外,您可以使用Expression Blend创建设计时数据。请参阅this post。
答案 1 :(得分:0)
如果您尝试实现与示例建议类似的功能,则可以继承ListBox并对其进行扩展。我没有尝试过,但也许你可以在显示XAML时使用ListBoxItems。