2010-11-13 49 views
2

我有窗口。 Window.DataContext = DataRow。如何將DataRow綁定到TextBlock?

和我有TextBlock。

我需要將DataRow.Array [0]綁定到TextBlock的Text屬性。

我該怎麼做?

編輯:

<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> 

在代碼:this.DataContext = dateRow.Rows [0];

+0

是否有其他具有約束力的工作? 我的意思是你在創建控件之後設置datacontext,並且我假設呈現。嘗試做之前或提高canexecutechanged事件.. – 2010-11-13 22:09:15

+0

我沒有undastanet你 – Mediator 2010-11-13 22:19:55

回答

3

您正在查找的物業可能是ItemArray。你可以像這樣綁定它,下面的方法會給你相同的結果(如果第一個Column被命名爲Column1)。

  • 第一個例子結合的第一個項目中ItemArray
  • 第二個例子結合到第一列
  • 第三個例子結合命名列1的列的值的值。這是推薦的方法,因爲即使您的列更改訂單,它仍然可以正常工作。

的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> 

後面的代碼示例

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

非常好的答案。這個答案幫助我用wpf中的Binding創建動態表單。 – Thulasiram 2014-08-18 11:01:20

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

工作正常,如果Array是公共財產。

+0

不是工作,我可能是錯誤的做一些事情。編輯帖子 – Mediator 2010-11-13 22:08:08