2014-07-18 38 views
1

这是我的xaml。我需要红色网格来填充整个单元格。如何获取数据模板以填充均匀的网格单元格?

<UserControl x:Class="Atelis.Tcc.Client.CheckList_TileView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300" 
     DataContext="{Binding Model}"> 
<ListBox ItemsSource="{Binding Checks}" SelectedItem="{Binding SelectedCheck}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns=" 3 "/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <Grid.InputBindings> 
        <MouseBinding Gesture="LeftDoubleClick" Command="{Binding Path=DataContext.OpenSelectedCheck, ElementName=TileView}"/> 
       </Grid.InputBindings> 
       <StackPanel> 
        <TextBlock Text="{Binding CheckRoot.CheckNum}"/> 
        <TextBlock Text="{Binding CheckRoot.CheckDate}"/> 
       </StackPanel> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我的目标是让用户在任何地方细胞点击执行InputBinding命令。所以如果有另外一种方法来实现这个目标,那也可以作为答案。

enter image description here

+0

什么问题吗?填补统一网格或调用命令? – pushpraj

+0

问题是填补网格。 –

+0

通过查看代码,它看起来像模板应该用红色填充单元格。也许你可以发布一个显示问题的图片。 – pushpraj

回答

3

,如果我给你正确的,那么它看起来像你的细胞没有在列表框中

所以设置HorizontalContentAlignment="Stretch" & VerticalContentAlignment="Stretch"会做的伎俩

<ListBox HorizontalContentAlignment="Stretch" 
     VerticalContentAlignment="Stretch" 
     ItemsSource="{Binding Checks}" 
     SelectedItem="{Binding SelectedCheck}" > 

替代做法完全伸展

<ListBox ItemsSource="{Binding Checks}" 
     SelectedItem="{Binding SelectedCheck}" > 
    <ListBox.Resources> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListBoxItem"> 
         <ContentPresenter /> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListBox.Resources> 

这种方法还可以帮助您删除所选的背景(通常为蓝色),如果你可能想要删除太

+1

非常好。正是我需要的。我都爱和恨wpf。它非常灵活,所以我喜欢wpf。但我无法跟上它的许多怪癖。谢谢。 –