0

我有一个自定义控件,其中我在 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’创建‘类型’。” 或“找不到名为 'MyConverter' 的资源。” 如果我尝试在代码中创建的数据模板是在 Generic.xaml 中定义的,并使用 TemplateSelector 进行选择,则它可以工作。

4

1 回答 1

0

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

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

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

于 2013-01-28T03:06:03.223 回答