我对一个非常奇怪的网格有一个设计要求......看起来像这样:
grid http://img219.imageshack.us/img219/3444/columns.png
我需要能够对两行中的标题进行排序...因此,如果他们单击“描述”,则按描述排序。如果他们单击“状态”,则按状态排序。使用列标题上的模板,我可以实现外观,但我似乎无法找到一种方法让每个单独的单元作为一个独特的标题。我怎么能这样做呢?
编辑:要创建列标题,我这样做了:
<StackPanel Orientation="Vertical" >
<Border Margin=".5" Background="{StaticResource DarkBlueBackground}" >
<Button Margin="6" Style="{StaticResource StaticLinkButton}"">
<TextBlock HorizontalAlignment="Left" Text="Part Number" MinWidth="40" />
</Button>
</Border>
<Border Margin=".5" Background="{StaticResource LightBlueBackground}" MinWidth="120">
<Button Margin="6" Style="{StaticResource StaticLinkButton}" Content="Part Type"/>
</Border>
</StackPanel>
,大部分都有效。问题是,当我有一个特别长的数据项(如长'部分类型')时,它会拉伸列,但我的“部件类型”标题周围的边框不会拉伸。我尝试使用网格而不是堆栈面板,但结果相同。是否有一种相对简单的方法可以使标题中的border / buttons / textblocks延伸到列的整个宽度?
编辑2
显示每个请求的标题模板代码:
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" >
<StackPanel Orientation="Horizontal">
<Border Margin=".5" >
<Button Margin="6" Style="{StaticResource StaticLinkButton}" >
<TextBlock Text="Qty OH" />
</Button>
</Border>
<Border Margin=".5" >
<Button Margin="6" Style="{StaticResource StaticLinkButton}" >
<TextBlock Text="Ord Qty" />
</Button>
</Border>
<Border Margin=".5" >
<Button Margin="6" Style="{StaticResource StaticLinkButton}" >
<TextBlock Text="Ret Qty" />
</Button>
</Border>
<Border Margin=".5" >
<Button Margin="6" Style="{StaticResource StaticLinkButton}" >
<TextBlock Text="Rec Qty" />
</Button>
</Border>
<Border Margin=".5" >
<Button Margin="6" Style="{StaticResource StaticLinkButton}" KeyboardNavigation.IsTabStop="False" >
<TextBlock MinWidth="90" MinHeight="27" Text="Quantity" />
</Button>
</Border>
</StackPanel>
<Border Margin=".5" Background="{StaticResource LightBlueBackground}">
<Button ="Part Type" KeyboardNavigation.IsTabStop="False"/>
</Border>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
答案 0 :(得分:3)
您可以将TextBlocks或其他任何内容包装在“隐形”按钮中并处理其点击或检查一些主要处理程序e.OriginalSource
是什么。 (命令也可以是一个选项)
要使按钮“不可见”,您可以应用一种简单的样式,使按钮仅显示其内容:
<Style x:Key="LooklessButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>