我想删除我的datagrid的元素而不改变我的数据源。我可以在不更改数据源的情况下删除我的数据网格的元素吗?
当我选择将我的数据网格绑定到我的数据库测试,它的工作原理。 我的datagrid显示我的2列:“ID”和“名称”与特定的行。 我可以将行添加到我的数据网格并将其保存到我的数据库。
但是现在我想显示没有任何元素的列的名称,所以用户可以添加行而不看我数据库的元素。
我该怎么做?
我想删除我的datagrid的元素而不改变我的数据源。我可以在不更改数据源的情况下删除我的数据网格的元素吗?
当我选择将我的数据网格绑定到我的数据库测试,它的工作原理。 我的datagrid显示我的2列:“ID”和“名称”与特定的行。 我可以将行添加到我的数据网格并将其保存到我的数据库。
但是现在我想显示没有任何元素的列的名称,所以用户可以添加行而不看我数据库的元素。
我该怎么做?
绑定您的数据网格的数据源的类型
ObservableCollection<T>
这样的数据源得到通知,每当收集变化的属性。
我建议,创建一个类型自定义类的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="{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);
}
}
假设你是正确Binding
您DataGrid.ItemsSource
财产,所有你需要做的,添加一个新的空行是添加一个新的项目数据绑定集合:
<DataGrid ItemsSource="{Binding Items}" ... />
...
Items.Add(new YourItemtype());
如果不正确Binding
与DataGrid.ItemsSource
财产,然后那是你需要做的。创建数据类型的类型的属性:
public ObservableCollection<YourItemtype> Items { get; set; }
,当然还有,请确保您将DataContext
到包含属性正确的数据源。
由于[本网站需要](http://stackoverflow.com/help/how-to-ask),请显示您的代码尝试解决您的问题。 – Sheridan