[英]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.