2013-05-22 79 views
0

我有問題與內部DataGrid綁定。該綁定與DataGrid「帳戶」一起使用,但不與「記錄」一起使用。我使用DataGrid.RowDetailsTemplate用於所述第二數據網格wpf中的內部DataGrid的綁定

<Grid> 
<Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
</Grid.RowDefinitions> 
<Grid Grid.Row="0"> 
<DataGrid ItemsSource="{Binding AccountList}" AutoGenerateColumns="False" x:Name="Account"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding AccountNumber}" Header="Account Number" FontSize="16"/> 
     <DataGridTextColumn Binding="{Binding Name}" Header="Name" FontSize="16"/> 
    </DataGrid.Columns> 
    <DataGrid.RowDetailsTemplate> 
     <DataTemplate> 
      <DataGrid ItemsSource="{Binding RecordList,Mode=TwoWay}" AutoGenerateColumns="False" x:Name="Record" IsSynchronizedWithCurrentItem="True"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Binding="{Binding RecordNumber}" Header="Record Number" FontSize="16"/> 
        <DataGridTextColumn Binding="{Binding Name}" Header="Name" FontSize="16"/> 
       </DataGrid.Columns> 
      </DataGrid> 
     </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
</DataGrid> 

</Grid> 

<Grid Grid.Row="1"> 
    <TextBlock Text="Account Number:"> <TextBox Text="{Binding ElementName=Account, Path=SelectedItem.AccountNumber}" x:Name="ANr"/> 
    <TextBlock Text="Record Number:"> <TextBox Text="{Binding ElementName=Record, Path=SelectedItem.RecordNumber}" x:Name="RecordText"/> 

</Grid> 

錯誤消息:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=Record'. BindingExpression:Path=SelectedItem.RecordNumber; DataItem=null; target element is 'TextBox' (Name='RecordText'); target property is 'Text' (type 'String') 

第一文本框結合沒有問題。第二個不能綁定。

謝謝

回答

2

那是因爲你的內心DataGridRecord只在您的DataTemplate的情況下是有效的。該數據模板將針對每一行重複,因此不能通過名稱真正綁定到控件上。你需要做的是,你必須通過外部DataGridSelectedItem進行綁定,但爲此,您需要在Account對象中指定哪些行在內部網格中被選中。所以,首先你需要在Account類創建SelectedRecord,內網將其綁定你SelectedItem,然後你可以這樣做:

<TextBlock Text="Record Number:"> 
<TextBox Text="{Binding ElementName=Account, 
    Path=SelectedItem.SelectedReocrd.RecordNumber}" 
    x:Name="RecordText"/> 
+0

在Account類我有RecordList(的ObservableCollection),字符串名稱,詮釋賬戶號碼。我如何創建SelectedRecord? – Georg

+1

例如在您的Account類中創建與您的RecordList類相同類型的SelectedRecord屬性,並將其綁定到內部DataGrid的SelectedItem,方法與綁定RecordList相似 – dkozl

+0

但我怎麼能將SelectedRecord與所選項目綁定。如果我只是在帳戶中創建SelectedRecord並寫入Binding ElementName = Account, Path = SelectedItem.SelectedReocrd.RecordNumber我沒有得到任何東西,因爲SelectedRecord爲NULL – Georg