在代码中定义Datatemplates

时间:2013-01-28 02:38:24

标签: wpf

我有一个自定义控件,我在Generic.xaml中定义了资源。我需要在运行时创建数据模板,例如

xaml = "<DataTemplate><TextBlock Text=\"{Binding " + Binding + "}\"/></DataTemplate>";

这样可以正常工作,但是如果模板访问其他资源我就会被卡住,例如

xaml = "<DataTemplate><TextBlock Text=\"{Binding " + Binding +
                      "}\" Margin=\"{Binding Bar, Converter={StaticResource MyConverter}, RelativeSource={RelativeSource AncestorType={x:Type local:Foo}}}\"/></DataTemplate>";

转换器和RelativeSource都会导致问题。

“无法在文本'local:Foo'中创建'Type'。”要么 “找不到名为'MyConverter'的资源。”如果我试图在代码中创建的数据模板改为在Generic.xaml中定义,并且使用TemplateSelector选择它可以工作。

1 个答案:

答案 0 :(得分:0)

您还必须在datatemplate中定义资源。

 <DataTemplate xmlns:local="clr-namespace:WpfApplication2">
        <DataTemplate.Resources>
            <local:MyConverter x:Key="MyConverter"/>
        </DataTemplate.Resources>
        <TextBlock Text="{Binding }"/>
    </DataTemplate>

请将其转换为C#支持格式。