文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>solve the issue that cannot use converter in xamlreader in silverlight

solve the issue that cannot use converter in xamlreader in silverlight

时间:2011-03-09  来源:allanli

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.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载