我有一个自定义控件,我在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选择它可以工作。
答案 0 :(得分:0)
您还必须在datatemplate中定义资源。
<DataTemplate xmlns:local="clr-namespace:WpfApplication2">
<DataTemplate.Resources>
<local:MyConverter x:Key="MyConverter"/>
</DataTemplate.Resources>
<TextBlock Text="{Binding }"/>
</DataTemplate>
请将其转换为C#支持格式。