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>
Этот код работает правильно. Но теперь я хочу связать Itemssource
с ComboBox
. Моя проблема в том, что Path
из Items
, который должен быть привязан к ComboBox
, полностью отличается. Path
выглядит так: CTMngRoot.CTManager.CTCollection.Name
. Любые идеи, как я могу это сделать?
Спасибо за ответ! У меня проблемы с этим. Я забыл написать, что я установил «Main'-Datacontext» в файле 'xaml.cs' (' this.DataContext = this.MngRoot; '). Внутри этого класса находятся два экземпляра ('CTMngRoot' и' MTMngRoot'). Теперь я добавил свой код в свой 'ComboBox'. Теперь он выглядит так: '
MyNewName
Вы не перенесли мое решение. 'RelativeSource' делает ваш источник привязки элементом управления, поэтому вам нужно привязываться к' DataContext' в начале «Пути» для доступа к данным. Кроме того, привязка «ComboBox.DataContext» - плохая идея, вы должны напрямую связывать «ItemsSource», как я показал, иначе вам будет сложно связать «SelectedItem». –
Спасибо! Теперь это сработало. Вы сделали ошибку. Вы написали '{Binding DataComtext.CTMngRoot ...' Я думаю, его нужно называть '{Binding DataContext.CTMngRoot ...'. Спасибо agaiN! – MyNewName