我想在不更改数据源的情况下删除数据网格的元素。
当我选择将我的数据网格绑定到我的数据库测试时,它可以工作。 我的数据网格显示了我的2列:" ID"和"姓名"具体的行。 我可以在我的数据网格中添加行并将其保存到我的数据库中。
但是现在我想显示没有任何元素的列的名称,因此用户可以添加行而不会看到我的数据库的元素。
我该怎么做?
答案 0 :(得分:3)
我建议,创建一个Type Custom Class的ObservableCollection,你将拥有IsVisible属性。默认值为false,如果IsVisible = false,则可以在xaml中添加逻辑,然后从网格中隐藏该行。
public ObservableCollection<GridInfo> Data { get; set; }
public class GridInfo
{
public bool IsVisible { get; set; }
// other properties will come like this
}
在XAML中,您可以使用具有网格行的Visibility属性的转换器,如下所示。
Visibility="{Binding IsVisible, Converter={StaticResource VisibilityConverter}}"
你将拥有如下转换器:
public class VisibilityConverter : IValueConverter
{
public object Convert(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
bool visibility = !(bool)value;
return visibility ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
Visibility visibility = (Visibility)value;
return (visibility == Visibility.Visible);
}
}
答案 1 :(得分:0)
将DataGrid的DataSource绑定到类型
的属性ObservableCollection<T>
这样,只要集合发生变化,数据源就会得到通知。
答案 2 :(得分:-1)
假设您对Binding
属性的DataGrid.ItemsSource
正确,那么添加新空行所需要做的就是向数据绑定集合中添加一个新项:
<DataGrid ItemsSource="{Binding Items}" ... />
...
Items.Add(new YourItemtype());
如果 正确Binding
且DataGrid.ItemsSource
属性,则 就是您需要做的事情。创建数据类型类型的属性:
public ObservableCollection<YourItemtype> Items { get; set; }
当然,请确保将DataContext
设置为包含该属性的正确数据源。