2012-06-19 20 views
1

我有一個使用caliburn.micro的wpf應用程序。它有一個數據網格和一個組合框。綁定到其他控件的選定值

這裏是數據網格:

<DataGrid x:Name="TriageMapRecords" 
      Grid.Row="0" Grid.ColumnSpan="5" 
      AutoGenerateColumns="False" 
      BaseControls:DataGridExtension.Columns="{Binding TriageMapRecordColumns}" 
      CanUserAddRows="False" IsReadOnly="True" 
      SelectedItem="{Binding Path=SelectedTriageMapRecord, Mode=TwoWay}"> 

SelectedTriageMapRecord對象包含一個字段CounterpartyNameId。

我想將組合框中選定的值綁定到SelectedTriageMapRecord的CounterpartyNameId。

我嘗試這樣做:

<ComboBox x:Name="RefCounterparties" 
      DisplayMemberPath="Name" SelectedValuePath="Id" 
      SelectedValue="{Binding Source=SelectedTriageMapRecord, 
            Path=CounterpartyNameId, Mode=TwoWay}" 
      Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" 
      Width="Auto" MinWidth="100" Margin="3,3,0,3"/> 

但這並沒有工作。你能告訴我我錯過了什麼嗎?

回答

1

看起來你可能想要做這樣的:

<ComboBox x:Name="RefCounterparties" 
      DisplayMemberPath="Name" SelectedValuePath="Id" 
      SelectedValue="{Binding SelectedTriageMapRecord.CounterpartyNameId, 
            Mode=TwoWay}" 
      Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" 
      Width="Auto" MinWidth="100" Margin="3,3,0,3"/> 

你不想設定一個來源,因爲你的來源仍然是DataContext。然後在DataContext上指定路徑以深入查看。在這種情況下,屬性的DataContext,然後對象的CounterpartyNameId屬性。

+0

非常感謝!有效。你能告訴我在什麼情況下我會使用該源代碼? –

+1

如果您希望Binding查看除繼承的DataContext以外的其他內容,則使用Source或ElementName。例如,如果您綁定了Window或UserControl資源中的某些內容。有關更多信息,請查看此處:http://msdn.microsoft.com/en-us/library/system.windows.data.binding.source.aspx – Tim

+0

非常感謝! –

相關問題