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 命令。因此,如果有另一种方法可以实现该目标,那也足以作为答案。

在此处输入图像描述

4

1 回答 1

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>

如果您也想删除选定的背景(通常是蓝色),此方法还将帮助您删除它

于 2014-07-18T12:41:40.610 回答