如何在Silverlight中在设计时修改CustomControl的某些部分?

如何在Silverlight中在设计时修改CustomControl的某些部分?,silverlight,xaml,custom-controls,design-time,Silverlight,Xaml,Custom Controls,Design Time,出于测试目的,我在一个DLL中编写了一个Silverlight自定义控件,该控件只包含在一个包含列表框的网格中,预先填充了两个项目 (仅供参考:在这个项目中,我只有2个文件:BaseLayout.cs和Generic.xaml。) 然后,在另一个项目中,我将此自定义控件放在MainPage.xaml上: 我知道如何使用TemplateBinding更改列表框的背景色。 我还知道如何在运行时将项目添加到此列表框 但是,是否可以在设计时在XAML中添加项? 有没有办法允许这样的事情发生: 欢

出于测试目的,我在一个DLL中编写了一个Silverlight自定义控件,该控件只包含在一个包含列表框的网格中,预先填充了两个项目 (仅供参考:在这个项目中,我只有2个文件:BaseLayout.cs和Generic.xaml。)

然后,在另一个项目中,我将此自定义控件放在MainPage.xaml上:


我知道如何使用TemplateBinding更改列表框的背景色。
我还知道如何在运行时将项目添加到此列表框

但是,是否可以在设计时在XAML中添加项? 有没有办法允许这样的事情发生:


欢迎提出任何建议

编辑:更准确地说,我希望能够从两个位置在我的列表框中添加一些项目:

  • 从Base.DLL,在Generic.xaml中
  • 来自另一个项目,位于MainPage.xaml中

我希望所有这些项都保留在运行时。

如果您试图实现示例所建议的类似功能,可以从列表框继承并扩展它。我还没有试过,但也许您可以使用XAML中的ListBoxItems,如图所示。

如果您使用的是mvvm,这意味着您的视图有一个viewmodel,其中包含此
BaseLayout
,您可以创建一个设计时viewmodel,在其中写入示例数据,并在视图中包含类似的内容

<Grid x:Name="LayoutRoot" d:DataContext="{d:DesignInstance design:DesignMainViewModel, IsDesignTimeCreatable=True}">
    <base:BaseLayout x:Name="MyLayout" ListBoxBg="BlanchedAlmond"/>

有关更多信息,请参阅


此外,还可以使用Expression Blend创建设计时数据。请参阅。

是的,我正在使用MVVM Light toolkit。你完全理解我想要实现的目标。我将测试您的解决方案,然后回来寻求反馈。非常感谢。六羟甲基三聚氰胺六甲醚。。。事实上,那不是我想要的。我希望我在设计时添加的数据在运行时仍然在这里。@Rodolphe,那么你的标题是误导性的。。。你到底想干什么?你确定你需要一个自定义控件而不是用户控件吗?标题的确选得不好,我不确定自定义控件。我将尝试解释全局:我想要一个包含基本布局的DLL。此基本布局将包含菜单栏、工具栏等。然后,在另一个项目中,我希望在页面上使用此控件,并能够在设计时和运行时在其中添加一些其他控件。但我的问题是菜单栏和工具栏必须部分地从DLL(带有一些经典项,如“打开”、“关闭”等)和我添加自定义/用户控件(带有特定项)的页面填充。更清楚吗?可行吗?@Rodolphe,我认为在你的情况下,用户控件是更好的选择。这里所说的设计时,你的意思是你可以在Blend的设计界面中看到值,对吗?我在这里使用了一个列表框来保持我的测试简单,但我的目标是构建更复杂的东西,包括菜单栏、工具栏和一些面板。所以我想从控件继承不会起作用。