XAML 在WPF中添加列,但仅针对某些行[duplicate]

mznpcxlj  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(127)
    • 此问题在此处已有答案**:

Grid inside Grid in XAML(4个答案)
三个月前关门了。
我正在努力理解WPF中的Grid控件。这里有一个非常基本的设置:

我想要的是,不是有三行和三列来划分每行,我想让列只划分最后一行,这样最上面的两行没有列,只有最后一行(第三行)有列。

e5nszbig

e5nszbig1#

您可以更改DataGridRow的模板,使行看起来不同。
假设您已将ItemsSource设置为如下所示..

var allItems = new ObservableCollection<DataItem>();
// ..
// fill the collection with data
// ..
DataGridName.ItemsSource = allItems;

首先,将新属性添加到DataItem

public bool LooksDifferent { get; set; }

接下来,在xaml中,我们将在LooksDifferent为true时更改DataGridRow模板。

<DataGrid ItemsSource="{Binding Items}">
    <DataGrid.ItemContainerStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding LooksDifferent}" Value="True">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type DataGridRow}">
                                <Border
                                    Background="White"
                                    BorderBrush="Black"
                                    BorderThickness="0,0,1,1">
                                    <TextBlock Text="I AM DIFFERENT" />
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.ItemContainerStyle>

    <DataGrid.Columns>
        <DataGridTextColumn
            Width="*"
            Binding="{Binding Property1}"
            Header="Header1" />
        <DataGridTextColumn
            Width="*"
            Binding="{Binding Property2}"
            Header="Header2" />
    </DataGrid.Columns>
</DataGrid>

现在,你已经准备好了!给予一试。

相关问题