小编jus*_*ick的帖子

将DataTemplate绑定到CustomControl问题

我得到的是一个自定义控件,它在 xaml 中实现数据模板:

<DataTemplate x:Key="Templat">
    <StackPanel>
        <TextBlock Text="Sample Text" />
        <TextBlock Text="{Binding Surname}" />
    </StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

和自定义控制:

 <local:MyControl x:Name="MyControl1" 
      ItemTemplate="{StaticResource Templat}" Margin="0,0,-24,8"/>
Run Code Online (Sandbox Code Playgroud)

generic.xaml(在我的自定义控件库中)具有:

<ControlTemplate TargetType="local:MyControl">
   <Canvas Name="LayoutRoot" Height="{TemplateBinding Height}" 
           Width="{TemplateBinding Width}" 
           Background="{TemplateBinding Background}" 
           CacheMode="BitmapCache">

      <Canvas Name="ItemsHost" Margin="10,185,0,0" Height="615" 
              Width="{TemplateBinding Width}" CacheMode="BitmapCache">
           <local:CustomItem x:Name="Item1" 
                  ContentTemplate="{TemplateBinding ItemTemplate}" />
           <local:CustomItem x:Name="Item2" 
                  ContentTemplate="{TemplateBinding ItemTemplate}" />
      </Canvas>  
   </Canvas> 
</ControlTemplate> 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我创建了一个自定义项目控件,其中有一些自定义内容控件。我希望它们都具有相同的内容模板,因此我将它们的内容模板绑定到父控件中定义的 itemtemplate。

我的问题是控件将显示带有“示例文本”文本的文本块,但不显示带有绑定值的文本块。我试图在代码隐藏中指定 DataContext(例如DataContext = new Person() { Surname="Johnson" }或通过 xaml)。它们都不起作用。

DataContext(Person 类)看起来传递正确,但传递的 DataTemplate 缺少表达式'{Binding Surname}'。您有任何想法可能会出现什么问题吗?

data-binding silverlight wpf custom-controls datatemplate

3
推荐指数
1
解决办法
6579
查看次数