WPF phone 8在DataTemplate类型中找不到可附加属性Resources

时间:2015-02-05 21:41:41

标签: c# wpf windows-phone-8

我正在尝试在运行时为ListBox的ContentTemplateSelected踢出一个DataTemplate。数据类型和值在运行时是未知的。这是一个例子。当我这样称呼时:

var dataTemplate = (DataTemplate)XamlReader.Load(xaml.ToString());

生成的xaml:

<DataTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:DSI.MyProject.Converters;assembly=DSI.MyProject"
>
    <DataTemplate.Resources>
        <converters:StringValueToBoolConverter x:Key="stringValueToBoolConverter" />
    </DataTemplate.Resources>   
    <Grid>
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="128" />
      </Grid.ColumnDefinitions>
      <Border BorderThickness="1" BorderBrush="Black" Grid.Column="0" Background="{StaticResource PhoneContrastBackgroundBrush}" >
          <CheckBox IsChecked="{Binding [CheckEd], Mode=TwoWay}" Padding="2" HorizontalAlignment="Left" />
      </Border>
   </Grid>
</DataTemplate>

我收到错误:

在DataTemplate类型中找不到可附加属性资源

我错过了包含的内容吗?

即使此示例不使用它,转换器也将用于IsChecked绑定。

这似乎对这个人有用: Dynamically added DataTemplate - StaticResource for Converter can't be found

我的原始问题:WPF using converter in datatemplate created from xaml text and XamlReader on phone 8

1 个答案:

答案 0 :(得分:1)

我认为你将WPF行为与Windows和Windows Phone 8的SilverLight XAML发行版混淆。不幸的是,ResourcesFrameworkElement基类的属性,而DataTemplate来自较低级DependencyObject级。因此,它不支持资源收集。

作为修复,请考虑将转换器作为Application或Page资源的一部分,而不是直接作为DataTemplate的一部分。