2010-03-22 64 views
2

我试图实质上用0123边框在ListViewGridViewColumn中包含DataTemplate的内容。我想知道的是,如果可以提供一个围绕该模板的装饰器,那么我就不必在每一列上指定每个栏的每个DataTemplate的边框(这正是我现在所做的)。我有这样的事情,但我知道这是不对的:包装或装饰wpf列表视图数据模板

<Style TargetType="{x:Type ListBoxItem}"> 
    <Setter Property="TemplateContent"> 
    <Setter.Value> 
     <ControlTemplate> 
     <StackPanel> 
      <Border BorderBrush="Green" BorderThickness="1"> 
      <AdornedElementPlaceholder /> 
      </Border> 
     </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

这抱怨说TemplateContent是不是有效的类型。我也试过DataTemplate,这也不管用(可以理解)。

我知道我可以创建一个DataTemplate,但每列的内容是不同的。至少,它绑定到不同的领域。我想知道是否有使用动态资源的解决方案,但我对此不太了解。感谢您的帮助

编辑:这是我的ListView样本:

<ListView ItemsSource="{Binding Path=OrderLines}" 
      ItemContainerStyle="{StaticResource ResourceKey=ListViewItemContainerStyle}"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn> 
     <GridViewColumn.CellTemplate> 
      <DataTemplate> 
      <TextBox MaxWidth="30" Width="30" MaxLength="2" 
        Text="{Binding Path=Quantity,ValidatesOnDataErrors=True}" /> 
      </DataTemplate> 
     </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
    <GridView> 
    <ListView.View> 
</ListView> 

基本上我想包装在DataTemplate和文本框在其他列的其他项目。

回答

0

该属性需要是“模板”。看到这里的一个例子:http://msdn.microsoft.com/en-us/library/ms750821.aspx

+0

这似乎不工作,我认为,因为它取代了整个ListBoxItem/ListViewItem模板 - 所以绿色框绕过整个行,而不是每个单元格。 – itowlson 2010-03-22 22:08:38

+0

我应该提到我打错了,目标类型是任何ListVIEWItem而不是ListBoxItem。因此,我似乎无法得到这个例子的工作。它将适用于列表视图中的那些GridViewColumns中的项目,但是,我所看到的只是绿色边框,并且内容现在已消失。我的列表视图有自定义模板。我将用代码示例更新主要请求。 我该如何将这种风格应用于单数列表视图(即:什么是将静态资源绑定到列表视图上的属性,因为它不是单元模板)。 – 2010-03-22 22:18:40