solve the issue that cannot use converter in xamlreader in silverlight

We cannot new a DataTemplate in code behind, otherwise it will popup an error.

There are two solutions to solve this problem, one is to define a DataTemplate in the .xaml file as resources. Such as:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:l="clr-namespace:Local;assembly=Local">

    <l:NegativeValueConveter x:Key="converter" />

    <DataTemplate x:Key="Template">
        <TextBlock 
               Text="{Binding BindingPath}"
               Tag="{Binding Tag}"
               HorizontalAlignment="Stretch"
               Foreground="{Binding BindingPath,Converter={StaticResource converter}}"
               TextDecorations="Underline"/>
    </DataTemplate>

<ResourceDictionary/>

 Make sure to replace the "l" with your own namespace and assembly.

The other solution is using xamlreader in code behind, such as:

StringBuilder sbTemp = new StringBuilder();
            sbTemp.Append("<DataTemplate ");
            sbTemp.Append("xmlns='http://schemas.microsoft.com/client/2007' ");
            sbTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
            sbTemp.Append("xmlns:local='clr-namespace:test;assembly=test>");
            sbTemp.Append("<Grid>");
            sbTemp.Append("<Grid.Resources>");
            sbTemp.Append("<local:DoubleToStyleConverter x:Key='DoubleToStyleConverter' />");
            sbTemp.Append("</Grid.Resources>");

            sbTemp.Append("<TextBox Text='{Binding [" + bindingPath + "],Mode=TwoWay}' ");
            sbTemp.Append(" IsReadonly='true' ");
            sbTemp.Append("Foreground=\"{Binding [" + bindingPath + "],Mode=TwoWay, Converter={StaticResource DoubleToStyleConverter}}\" ");
            sbTemp.Append("/>");

            sbTemp.Append("</Grid>");
            sbTemp.Append("</DataTemplate>");
            return (DataTemplate)XamlReader.Load(sbTemp.ToString());

1. Make sure to replace the "test" with your own namespace and assembly.

转载于:https://www.cnblogs.com/allanli/archive/2011/03/09/1977970.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值