2016-06-27 58 views
0

我的代碼看起來是這樣的:不同的DataContext在ItemsControl中

<ItemsControl ItemsSource="{Binding Path=MTMngRoot.MTManager.MTCollection}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="*"/> 
       </Grid.ColumnDefinitions> 

       <TextBox Text="{Binding Path=Name}" ToolTip="Name" Controls:TextBoxHelper.Watermark="Name" Grid.Column="0"/> 
       <ComboBox SelectedItem="{Binding Path=DefaultCT}" Grid.Column="1"> 
        <ComboBoxItem>Item 1</ComboBoxItem> 
        <ComboBoxItem>Item 2</ComboBoxItem> 
       </ComboBox> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

此代碼工作正常。但是現在我想綁定來自ComboBoxItemssource。我的問題是,應該綁定到ComboBoxItemsPath完全不同。 Path看起來像這樣:CTMngRoot.CTManager.CTCollection.Name。任何想法我可以做到這一點?

回答

2

在這些情況下,您可以使用正確的DataContext進行控制。

​​
+0

感謝您的回答!我有一些問題。我忘了寫我在'xaml.cs'文件('this.DataContext = this.MngRoot;')中設置'Main'-Datacontext'。這個類中有兩個實例('CTMngRoot'和'MTMngRoot')。 現在我將你的代碼添加到我的ComboBox中。現在看起來像這樣: '' 它不這樣工作。 – MyNewName

+0

您沒有正確傳輸我的解決方案。 'RelativeSource'使得你的綁定源成爲一個控件,因此你需要綁定到'Path'開頭的'DataContext'來訪問數據。另外,綁定'ComboBox.DataContext'是一個壞主意,你應該直接綁定像我所示的ItemsSource,否則你將無法綁定SelectedItem。 –

+0

謝謝!現在它工作了。你犯了一個錯誤。你寫了'{Binding DataComtext.CTMngRoot ...'我認爲它必須被稱爲'{Binding DataContext.CTMngRoot ...'。 謝謝agaiN! – MyNewName

相關問題