簡體   English   中英

在WPF Datagrid中隱藏新行中的單元格

[英]Hide cell in new row in WPF Datagrid

我有一個WPF Datagrid,它有一個模板列,如下所示:

<DataGridTemplateColumn x:Name="ciDelete" Header="Delete">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button x:Name="btnDelete" HorizontalAlignment="Center" Margin="0" Click="btnDelete_Click" Tag="{Binding Path=ciID}" VerticalAlignment="Center">
                <Image Source="Resources/16x16/delete.png" Stretch="Fill" />
            </Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

這顯示並且效果很好。 但是,按鈕會在行中顯示新項目(如下所示)。 由於這是一個刪除按鈕,我不希望它顯示在“新項目”行上。

“新行”中顯示的按鈕

我已經看到了條造型的新行,但是這似乎有點極端。 我很好奇是否有一個更簡單的方法只隱藏“新行”上的按鈕。 謝謝您的幫助。

如果是我,我會寫一個快速轉換器來確定DataGridRow的datacontext是否是NewItemPlaceholder:

public class IsNamedObjectVisibilityConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value.GetType().Name == "NamedObject")
        {
            return Visibility.Hidden;
        }
        else
        {
            return Visibility.Visible;
        }

    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

}

然后我將一個RelativeSource綁定添加到刪除按鈕可見性:

<DataGridTemplateColumn x:Name="ciDelete" Header="Delete">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button x:Name="btnDelete" HorizontalAlignment="Center" Margin="0" Click="btnDelete_Click" Tag="{Binding Path=ciID}" VerticalAlignment="Center"
                 Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridRow}, Path=DataContext, Converter={StaticResource IsNamedObjectVisibilityConverter}}">
                <Image Source="Resources/16x16/delete.png" Stretch="Fill" />
            </Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

這可能是也可能不是最好的方法,但應該有效。

我希望這有幫助。

編輯:我希望很明顯,為了簡潔起見,我跳過了創建所述轉換器實例的部分。 此示例假定您具有類的確切名稱的Converter實例。 可能很明顯,但值得一提。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM