2016-04-28 1 views
0
<DataGrid.Columns> 
    <DataGridTextColumn Header="A" Width="150" Binding="{Binding A}"/> 
    <DataGridTextColumn Header="B" Width="100" Binding="{Binding B}"/> 
    <DataGridTextColumn Header="C" Width="100" Binding="{Binding C}"/> 
    <DataGridTextColumn Header="D" Width="100" Binding="{Binding D}"/> 
    <DataGridTextColumn Header="E" Width="100" Binding="{Binding E}"/> 
    <DataGridTextColumn Header="F" Width="100" Binding="{Binding F}"/> 
<DataGrid.Columns/> 

Jetzt möchte ich Werte aus der Textdatei 1,2,3,4,5,6 anstelle von A, B, C, D, E, F nehmen. Wie mache ich das?Wie kann ich Werte von Notepad-Textdatei zu Datagrid-Header übernehmen? Ich möchte nur Header nicht Daten nehmen

Antwort

0

eine Textdatei zu lesen, können Sie Stream verwenden:

using (var reader = new StreamReader(File.OpenRead("c:/yourfile.txt"), 
            Encoding.GetEncoding("iso-8859-1"))) 
{ 
    while (!reader.EndOfStream) 
    { 
     var line = reader.ReadLine(); 
     var values = line.Split(';'); // replace ';' by the your separator 

     string header1 = values[0]; 
     string header2 = values[1]; 
     string header3 = values[2]; 
     //... 

    } 
} 

Für Datagrid-Header, müssen Sie jedes Header an eine Eigenschaft binden. Sie können diese Implementierung versuchen:

* .xaml

<Grid Background="White" x:Name="Layout"> 
    <DataGrid x:Name="grid" ItemsSource="{Binding MyCollection}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding FirstName}"> 
       <DataGridTextColumn.Header> 
        <TextBlock DataContext="{Binding ElementName=Layout, Path=DataContext}" Text="{Binding Header1}"/> 
       </DataGridTextColumn.Header> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

Code hinter * .cs

public MainWindow() 
{ 
    InitializeComponent(); 
    this.DataContext = new MainViewModel(); 
    Layout.DataContext = this.DataContext; 
} 

Und Ansichtsmodell * .cs

private string header1; 
public string Header1 
{ 
    get 
    { 
     return header1; 
    } 
    set 
    { 
     this.header1 = value; 
     this.NotifyPropertyChanged("Header1"); 
    } 
} 

bearbeiten Wenn Sie nicht MVVM verwenden, können Sie versuchen, diesen Ansatz:

* .cs

string Header1 = string.Empty; 
using (var reader = new StreamReader(File.OpenRead("c:/yourfile.txt"), 
         Encoding.GetEncoding("iso-8859-1"))) 
{ 
    while (!reader.EndOfStream) 
    { 
     var line = reader.ReadLine(); 
     var values = line.Split(';'); // replace ';' by the your separator 

     Header1 = values[0]; 
     //... 
    } 
} 
grid.Columns[0].Header = Header1; 

* .xaml

<DataGrid.Columns> 
    <DataGridTextColumn Width="150" Binding="{Binding A}"/> 
<DataGrid.Columns/> 
+0

Sind Sie Implementierung MMVM? – Amine

+0

Ich aktualisierte meine Antwort – Amine

+0

können Sie Ihre XAML und Code hinter Ihnen zu teilen – Amine

Verwandte Themen