2016-04-14 3 views
1

leer sein ich die Datenraster von SQLite-DatenbankItems-Auflistung muss nach dem Binden des Datagrid

var mA = new System.Data.SQLite.SQLiteDataAdapter("SELECT * FROM users ORDER BY Name", DataHolder.SQLiteConnection); 
var mT = new System.Data.DataTable(); 
if (dataGrid.Columns.Count > 0) 
{ 
    return; 
} 
mA.Fill(mT); 
if (mT.Rows.Count == 0) 
{ 
    mT.Rows.Add(new object[mT.Columns.Count]); 
} 
dataGrid.ItemsSource = mT.DefaultView; 

füllen, aber nachdem ich binde die DataGrid die Zelle Hintergrund zu ändern, wenn sein Wert gleich 0 durch diesen Code

<DataGrid x:Name="dataGrid" Margin="0,10,0,0" Loaded="dataGrid_Loaded" FontSize="14"> 
    <DataGridTextColumn Binding="{Binding Active}"> 
     <DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Background" Value="{Binding Active, Converter={StaticResource All}}"/> 
     </Style> 
     </DataGridTextColumn.ElementStyle> 
    </DataGridTextColumn> 
</DataGrid> 

IValueConverter

public class All : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string input = value as string;  

     if (System.Convert.ToByte(input) == 0) 
     { 
      return Brushes.Red; 
     } 
     else if (System.Convert.ToByte(input) > 0 && System.Convert.ToByte(input) < 5) 
     { 
      return Brushes.OrangeRed; 
     } 
     else 
     { 
      return DependencyProperty.UnsetValue; 
     } 
    } 

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

} 

bekomme ich diesen Fehler zur Laufzeit, wenn DataGrid wird das

Eine Ausnahme des Typs ‚System.InvalidOperationException‘ in PresentationFramework.dll aufgetreten sagen gefüllt wurde aber in Benutzercode

Zusätzliche Informationen nicht behandelt: Items-Auflistung muss leer sein, bevor Sie Itemssource.

bei dataGrid.ItemsSource = mT.DefaultView;

+0

dieser Fehler tritt auf, wenn die Steuer hart codierte Elemente zu enthalten. Fügen Sie der Combobox ein Comboboxitem hinzu und stellen Sie itemsource ebenfalls ein. Sie erhalten diesen Fehler. – AnjumSKhan

Antwort

4

Sie haben vergessen DataGrid.Columns Tag in Sie XAML hinzuzufügen. Ohne diese DataGridTextColumn wird als ein Element behandelt und da Sie ItemsSource setzen Sie einen Fehler, den Sie versuchen, Elemente aus zwei Quellen zu füllen

<DataGrid ...> 
    <DataGrid.Columns> 
     <DataGridTextColumn> 
Verwandte Themen