2010-11-13 4 views
2

J'ai Fenêtre. Window.DataContext = DataRow.Comment lier un DataRow à un TextBlock?

et j'ai TextBlock.

J'ai besoin de lier DataRow.Array [0] à la propriété Text d'un TextBlock.

Comment puis-je le faire?

edit:

<Window x:Class="Client.payment.CheckMore" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:wpf="http://schemas.microsoft.com/wpf/2008/toolkit" Loaded="Window_Loaded" x:Name="p_this"> 
      <DockPanel> 
       <TextBlock x:Name="p_idCheck" Text="{Binding Path=Array[0]}"/> 
      </DockPanel> 
</Window> 

en code: this.DataContext = dateRow.Rows [0];

+0

Est-ce que tout autre travail de liaison ?? Je veux dire que vous définissez datacontext après que le contrôle a été créé et, je suppose, rendu. essayer de le faire avant ou augmenter l'événement canexecutechanged .. –

+0

je ne pas undastanet vous – Mediator

Répondre

3

La propriété que vous cherchez est probablement ItemArray. Vous pouvez lier comme ceci, les manières suivantes vous donneront le même résultat (si la première Colonne est nommée Colonne1).

  • Le premier exemple se lie au premier élément de ItemArray
  • Le second exemple se lie à la valeur de la première colonne
  • Le troisième exemple se lie à la valeur de la colonne nommée Column1. Cette approche est recommandée car elle fonctionnera même si vos colonnes changent d'ordre.

Xaml

<StackPanel> 
    <TextBlock x:Name="p_idCheck" 
       Text="{Binding Path=ItemArray[0]}"/> 
    <TextBlock x:Name="p_idCheck2" 
       Text="{Binding Path=[0]}"/> 
    <TextBlock x:Name="p_idCheck3" 
       Text="{Binding Path=[Column1]}"/> 
</StackPanel> 

code derrière exemple

private DataSet m_dataSet = null; 
public MainWindow() 
{ 
    InitializeComponent(); 
    m_dataSet = new DataSet(); 

    DataTable dataTable1 = new DataTable("Table1"); 
    dataTable1.Columns.Add("Column1", typeof(string)); 
    m_dataSet.Tables.Add(dataTable1); 

    DataRow dataRow1 = dataTable1.NewRow(); 
    dataRow1["Column1"] = "Column1Value"; 
    dataTable1.Rows.Add(dataRow1); 

    this.DataContext = dataRow1;    
} 
+0

Très bonne réponse. cette réponse m'a aidé à créer une forme dynamique avec Binding dans wpf. – Thulasiram

0
<TextBlock Text = "{Binding Array[0]}" ... 

fonctionne correctement si Array est propriété publique.

+0

n'est pas le travail, je peux me tromper de faire quelque chose. A edit post – Mediator

Questions connexes