【发布时间】:2010-08-05 17:05:02
【问题描述】:
嘿,所以我在 Silverlight 中有一个自定义控件。它是什么并不重要,但它是一个包含树视图、滑块和其他垃圾的大型复合物。
现在在控件中我们有一个名为 defaultTemplate 的实例变量。它是 DataTemplate 类型。基本上它是 TreeViewItem 用作其标题模板的模板,除非应用程序开发人员调用 myControl.setTemplate(DataTemplate dt);
只需将属性公开并为其提供 getter 和 setter,当我键入以下内容时,它就会以智能感知方式显示...
<myNamespace:myControl x:Name="theControl" defa
Intellisense 发现我的类有一个 defaultTemplate 属性并将其列为一个选项。
我想要什么:
我希望继续使用上述功能,但添加智能感知功能以自动列出值的选项。所以我在控件可以访问的资源字典中定义了这些数据模板。当我进入这部分输入时,我希望它们作为选项弹出:
<myNamespace:myControl x:Name="theControl" defaultTemplate="_"
我正在寻找的功能可以在 TextBlock 的前景属性中找到。当你输入
foreground="" 它开始列出颜色供您选择。我可以将常量定义为我的数据模板的名称,并让智能感知从这些或类似的东西中进行选择。
我怎样才能做到这一点?谢谢!
澄清编辑:我需要让智能感知知道一个常量列表,这些常量是 xaml 属性可接受的输入。所以我的 defaultTemplate 属性可以只是一个字符串。我将在后面的代码中处理该字符串的含义。但我需要智能感知才能知道可以在 XAML 中为该属性输入哪些字符串。输入引号后,前景色会在智能感知中弹出一个列表,类似于“Azure、Beige... LemonChiffon...等”。如何为该列表提供智能感知? 谢谢!
最终编辑:感谢 siege898,我现在可以从智能感知提供给我的列表中选择我的 defaultTemplate 值。但是,我还希望能够为应用程序开发人员(使用我的控件)提供一个选项来定义他们自己的数据模板并指定它的名称。
例如,Bob 在他的应用程序中使用我的控件。我提供的模板都不适合他。因此 Bob 在资源字典中为他的应用程序创建了一个名为 bobTemplate 的数据模板。我希望 Bob 能够在 xaml defaultTemplate="bobTemplate" 的 defaultTemplate 字段中输入,并且不会引发错误。我相信我现在遇到的问题是因为该字段期望我的枚举中有一个值。有谁知道我如何将其设置为既给我从枚举生成的下拉列表,但仍然接受自定义字符串? 我在想一个类型转换器,但我不知道如何将它用于我想要的......
【问题讨论】:
标签: c# silverlight intellisense