Silverlight 标记扩展

标签 silverlight binding

我正在 Silverlight 中开发 map 应用程序。我有一个 Polygon 类型,包含一个多边形的坐标和一个包含加载到应用程序中的 Brush 资源名称的字符串。我将此对象直接绑定(bind)到用于绘制多边形的模板。此模板具有 System.Windows.Media.Brush 类型的填充属性。

我的目标是让 xaml-parser 查找资源,考虑到我只有 Brush 的名称而不是资源本身。

在 Silverlight 中,我想实现类似于 Pedro Sampaio 在 WPF 中展示的内容,在这篇博文中:http://www.e-pedro.com/2009/06/using-data-binding-with-static-resources-in-wpf/ .他创建了一个继承 StaticResourceExtension 类型的 BindableStaticResource。然后他可以像这样进行绑定(bind):

<Polygon Fill="{BindableStaticResource {Binding NameOfFillResource}}" />

非常优雅!但似乎这不是 Silverlight 中的一个选项,因为没有可用于子类型的 MarkupExtension 类型。我对 Silverlight 还很陌生,真的想不出一个好的、可重用的实现方法。

谢谢! 哈拉尔德V

最佳答案

你是对的,没有办法为 silverlight 创建你自己的标记扩展。

我用值转换器解决了这类问题。我经常回答这类事情,所以我最终将其写成博客 here .

在项目中使用 StringToObjectConverter 的源代码,您可以将转换器的实例放置在资源中的某处:-

        <local:StringToObjectConverter x:Key="StatusToBrush">
            <ResourceDictionary>
                <SolidColorBrush Color="Red" x:Key="Overdue" />
                <SolidColorBrush Color="Orange" x:Key="Urgent" />
                <SolidColorBrush Color="Silver" x:Key="__default__" /> 
            </ResourceDictionary>
        </local:StringToObjectConverter>

然后您的绑定(bind)将如下所示:-

<Polygon Fill="{Binding NameOfFillResource, Converter={StaticResource StatusToBrush}}" /> 

关于Silverlight 标记扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815839/

相关文章:

javascript - : "all = Promise.all.bind (Promise)"? 这个语句是什么意思

Android TextView 。可以参数化吗?可以绑定(bind)到模型吗?

swift - 将 NSPopupbutton 绑定(bind)到类数组

mvvm - Prism :如何将 shell.xaml 中的内容绑定(bind)到区域内容变量?

C# Silverlight - 构建时间轴?

silverlight - 使用 WCF 将 Linq-to-Sql 对象发送到服务器时出错

wcf - 可以做些什么来加快同步 WCF 调用?

silverlight - 在 Silverlight RIA 服务中禁用 DomainContext/DomainDataSource 的缓存

c# - 如何在 C# 和 Xaml 中将字符串 Url 添加到图像源

c# - 如何使用 WPF 绑定(bind)触发 DataGrid 中特定单元格的更新