2014-01-30 34 views
0

我想删除我的datagrid的元素而不改变我的数据源。我可以在不更改数据源的情况下删除我的数据网格的元素吗?

当我选择将我的数据网格绑定到我的数据库测试,它的工作原理。 我的datagrid显示我的2列:“ID”和“名称”与特定的行。 我可以将行添加到我的数据网格并将其保存到我的数据库。

但是现在我想显示没有任何元素的列的名称,所以用户可以添加行而不看我数据库的元素。

我该怎么做?

+0

由于[本网站需要](http://stackoverflow.com/help/how-to-ask),请显示您的代码尝试解决您的问题。 – Sheridan

回答

0

绑定您的数据网格的数据源的类型

ObservableCollection<T> 

这样的数据源得到通知,每当收集变化的属性。

4

我建议,创建一个类型自定义类的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); 
    } 
} 
+0

我认为你误解了这个问题。问题作者说*但现在我想显示没有任何元素的列的名称,所以用户可以添加行而不会看到我的数据库的元素* ...没有关于隐藏行。 – Sheridan

+0

没有看到元素意味着用户想要隐藏来自外部世界的数据并且不想删除实际数据(按照用户,他想从网格而不是从数据源删除数据)。 –

+0

如果你再次阅读他们的问题(我接受的是*不清楚),我认为你会发现他们只是想显示一个空行:*因此用户可以添加行而不会看到我的数据库的元素* 。无论哪种方式,我们很快就会发现。 – Sheridan

-1

假设你是正确BindingDataGrid.ItemsSource财产,所有你需要做的,添加一个新的空行是添加一个新的项目数据绑定集合:

<DataGrid ItemsSource="{Binding Items}" ... /> 

... 

Items.Add(new YourItemtype()); 

如果不正确BindingDataGrid.ItemsSource财产,然后是你需要做的。创建数据类型的类型的属性:

public ObservableCollection<YourItemtype> Items { get; set; } 

,当然还有,请确保您将DataContext到包含属性正确的数据源。

相关问题