WPF - 通过代码在数据模板中托管内容控件

时间:2013-03-06 11:11:52

标签: c# wpf wpf-controls

我正在尝试在数据模板中托管内容控件。

与此完全相似: Putting a ContentControl *inside* a WPF DataTemplate?

我通过XAML成功完成了这项工作。我想通过代码做同样的事情。

我创建了一个样式:

<Style x:Key="radioButtonAddtruefalse">
  <Setter Property="Control.Template">
    <Setter.Value>
      <ControlTemplate>
        <StackPanel Orientation="Horizontal">
          <RadioButton Content="True"  IsChecked="{Binding Value}"></RadioButton>
          <RadioButton Content="False" IsChecked="{Binding Value, Converter={StaticResource _invertedBooleanConverter}}"></RadioButton>
        </StackPanel>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

并在数据模板中:

                <DataTemplate>
                  <ContentControl Style="{StaticResource radioButtonAddtruefalse}"> /ContentControl>
                </DataTemplate>

我尝试通过代码执行此操作,但在DataTemplate下找不到任何允许我托管内容控件的内容。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

刚从MSDN Forum复制,但这应该有效。虽然没有尝试过。

FrameworkElementFactory fef = new FrameworkElementFactory(typeof(TextBlock));

Binding placeBinding = new Binding();

fef.SetBinding(TextBlock.TextProperty, placeBinding);

placeBinding.Path = new PropertyPath("Name");

dataTemplate = new DataTemplate();

dataTemplate.VisualTree = fef;

另外看看 Create DataTemplate in code behind