问题标签 [design-time]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5913 浏览

c# - 在设计时限制用户控件的大小

我有一个命名空间Company.UI.Forms,我们有一个BaseForm继承自System.Windows.Forms.Form.

我需要限制这个表单的大小,这样如果一个具体的表单,比如说ExampleForm,派生自BaseForm,它在 VS 设计器视图中应该有一个固定的大小。应该以某种方式(在BaseFormctor 中?)设置或定义固定大小,以便派生ExampleForm和设计者选择它。

那可能吗?

[编辑] 目的是将基类用作已知屏幕尺寸的 Windows CE 设备的全屏窗体的模板,我希望能够在设计器中布置子控件。

0 投票
1 回答
2323 浏览

c# - 如何避免在设计时在紧密绑定的用户控件中重置属性?

我有带有标签的 UserControl 'A' 和这个属性:

然后我有 UserControl 'B' 上面有 UserControl 'A',我在设计器中将 Text 属性设置为“我的示例标签”。然后,我有我的 MainForm,上面有 UserControl 'B'。

每次构建或运行时,UserControl 'A' 的 Text 属性都会重置为其默认值。我想这是因为我正在重建,它重建了 UserControl 'A' 和 'B',从而导致了问题。

在应用程序中使用紧密绑定的控件和表单时,如何采用更好的设计模式方法来避免此类行为?

0 投票
2 回答
2480 浏览

mvvm - 为 Blend 和 VS 提供设计时 ViewModel 数据

在基于 MVVM 的应用程序中,我必须在设计时提供哪些选项来提供 ViewModel 数据,以便我们的设计人员实际上可以在 Blend3(和 VS 2008)中看到一些东西。你是怎么做到的?我可以以某种方式使用 mc:ignorable 吗?

0 投票
1 回答
2148 浏览

c# - Windows 窗体控件可以具有仅设计时属性吗?

我希望允许我的控件的用户选择控件的许可方法。选择来自枚举,因此他们必须选择我为他们制定的方法之一。需要在运行时执行代码之前选择此许可证。因此,我希望他们在设计时选择一个值。此外,如果可以避免的话,我不希望这个属性在运行时是可写的。有没有办法让一个属性只在设计时可用?

0 投票
2 回答
180 浏览

c# - 为什么 System.Design 中的许多 Designer 类都标记为内部?

我一直在为我们的产品开发一些组件,其中之一是基于流程布局面板。

我想做的是为它提供一个自定义设计器,但不会失去它的默认设计器 ( System.Windows.Forms.Design.FlowLayoutPanelDesigner) 提供的功能,它被标记为internal.

使用 Reflector 我想我会自己再次实现它,因为它继承自“FlowPanelDesigner and that fromPanelDesigner”,所有这些都是内部的。

为什么这些类会被特别标记为内部类?是因为它们专门供 Visual Studio 使用,因此不是“框架”代码吗?

此外,是否有更简单的选择来重新实现所有功能?

0 投票
1 回答
1626 浏览

visibility - Expression Blend 设计时特定的视觉效果是否可行?

我正在尝试在 Blend 3 中设计一些 UserControl 类。我希望它们的一部分在运行时创建时“折叠”,但我希望能够编辑它们的组件部分,而无需在每次构建时都摆弄代码。

它适用于示例数据源,如以下示例所示。但它似乎不适用于其他属性......还是我做错了什么?

使用示例数据源SDS_AIVertexAction我们可以在 Expression Blend 中执行此操作:

但似乎不可能做到这一点:

我意识到我可以在“加载时”更改可见性,但我真的不想每次进行这样的控件时都输入所有这些废话。有人知道让我们这样做的秘密吗?

0 投票
1 回答
1724 浏览

.net - 控件集合的设计时编辑器支持

我想向组件添加一个表示控件集合的属性,并有一个集合编辑器,我可以使用它轻松选择属于该集合的控件。VS使用以下代码自动完成了我想要的几乎所有操作:

我得到了默认的CollectionEditor,可以添加和删除控件,并且集合是序列化的。

问题是我不想添加控件,我想从表单上的其他可用控件中选择多个控件。有什么简单/标准的方法可以做到这一点,还是我必须编写自己的集合编辑器并运行控件集合?

尽管有很多关于集合编辑器 (UITypeEditors) 和其他设计时主题的材料,但我无法找到任何链接来演示这种确切的行为,因此感谢您提供任何帮助。

0 投票
0 回答
133 浏览

reflection - 自定义 asp.net 控件是否可以在设计时从托管控件的程序集中加载类型?

我有一个用于 asp.net 的自定义服务器控件。它可用的属性之一是通用对象。该通用对象具有可读取并用于自定义控件呈现的自定义属性。

在运行时,这没有问题,因为我需要做的就是找到传递给控件的实例上的所有属性。

但是,正如控件的“DataSource”成员可以在设计时调用对象类型列表一样,我希望能够在宿主程序集中调出类型列表。不需要实际实例,因为我是基于属性进行渲染的。

这是来自主机控件的示例属性:

我想要发生的是让 TheObjectConverter 能够为控件加载主机页面的程序集。

以下似乎都不起作用

我什至对 .GetReferencedAssemblies() 进行了完全递归,但没有运气。看来我无法在设计时加载控件主机的程序集。这是正确的,还是有办法做到这一点?

0 投票
2 回答
815 浏览

.net - 在属性网格中向控件的扩展属性添加“重置”命令

我有一个 IExtenderProvider 的扩展器组件,它扩展了一个 TextBox 以具有“选定的颜色”。此颜色的默认值为“highlight”。用户可以在扩展器的属性网格中更改“默认选择的颜色”。如果没有扩展 TextBox 定义了“选定颜色”,它将使用指定的“默认删除颜色”值。

如果程序员更改了 TextBox 的“选定颜色”,我想在属性网格中提供“重置”命令,将“选定颜色”重置为“默认选定颜色”,如 Extender 组件中定义的那样。

如何将“重置”命令添加到扩展控件的属性网格值,然后将该扩展属性“重置”为扩展器提供的默认值?

我希望允许用户右键单击扩展属性并选择重置以将属性恢复为其在扩展程序中定义的默认值。

(请参阅http://msdn.microsoft.com/en-us/library/53b8022e.aspx上的使用 ShouldSerialize 和重置方法定义默认值)显然,这不会起作用。

而且我不能使用以下内容,因为这是用于扩展器属性的“重置”。

我不能使用DefaultValue,如下所示,因为它需要一个常量,但事实并非如此,因为程序员可以更改默认值。

我需要类似的东西,<DefaultValue(Me.Property)>因为 Me.Property 是程序员通过属性网格指定的值。(我不能这样做,因为Me.Property它不是一个常数。)

[澄清] 扩展器本身具有属性。这些是任何扩展控件的默认值。如果程序员没有为特定的扩展控件指定“覆盖”值,则将使用默认值。我作为扩展器的作者,默认为特定值,例如“突出显示”,但是您,我的扩展器的用户,想要默认为“红色”,您将不得不更改扩展器的属性。现在任何未定义此扩展属性的扩展控件都将使用“红色”。然而,任何指定了值的控件......都不能“重置”到这个“红色”。默认值不适用。(目前,设置默认值的唯一方法是从设计器中删除代码。)

有什么建议么?

请注意,我没有在上面的代码片段中使用颜色,因为它会混淆我试图说明的内容。

0 投票
2 回答
4281 浏览

c# - 设计时拖放

我目前正在从事一个项目,我的职责是设计一个设计表面,最终用户可以在运行时添加/删除/移动控件。

我遵循了本教程“Hosting Windows Forms Designers, by Tim Dawson”,并且几乎实现了我需要的所有功能。

给那些不想阅读教程的人的短篇故事:我实现IDesignerHostIContainerISelectionServiceIToolboxService其他一些界面,以创建我的设计界面。我没有使用System.ComponentModel.Design.DesignSurface已经在框架中的,主要是因为我需要一个真正定制的设计表面。

问题 :

Control我想允许用户将新的从拖放IToolboxServiceIDesignerHost/IContainer. 在本教程中,您Control单击工具箱中的一个,单击设计表面以添加控件。

我发现了什么:

  • IToolboxService有一个内置功能可以自动从to 拖放 ,System.ComponentModel.Design.DesignSurface但如果您从无到有实现 IDesignerHost,它显然不起作用。
  • 当您使用该 Control.DoDragDrop(ToolboxItem) 方法时,启动拖放:

    1. IToolboxService.SerializeToolboxItem(ToolboxItem) 被调用来序列化项目
    2. IToolboxService.IsToolboxItem(object) 并被
      IToolboxService.IsSupported(object) 调用以评估是否
      可以允许将序列化的 ToolboxItem 拖放到设计图面上
    3. 当您放置控件时:IToolboxService.DeserializeToolboxItem(object serializedObject)由设计图面调用以反序列化已放置的控件。
  • IToolboxService.SetCursor()调用以了解您是定义自定义光标还是让标准窗口光标。

问题 :

我在“我发现了什么”中实现了上面提到的所有内容,但是拖放是错误的:

  • 我拖动,一切都很好,但是当悬停在设计表面时,我的光标在标准光标和“ DragDropEffects.Copy”样式之间闪烁了一下。
  • 当我放下时,什么也没有发生,当我的光标离开设计表面时(在我放下之后),然后新Control的被创建并添加到我放下它的地方。

有没有人尝试过我正在做的事情,如果有,你是如何做到的?有没有人有任何指针/链接/好的建议?

谢谢你=)