Я работаю в приложении и использую для этого WPF UI Framework в шаблоне MVVM.
Когда я использую шаблон с MainWindow и один ContentControl работает без проблем, но когда я хочу применитьта же логика в дочернем ContentControl, я получаю эту ошибку
System.InvalidOperationException: 'Layout recursion reached allowed limit to avoid stack overflow: '2047'. Either the tree contains a loop or is too deep.'
Вот как я думаю, что пользовательский интерфейс
Главное окно открывает разделы при нажатии кнопки Изображение или Сохранить:
<Window.Resources>
<DataTemplate x:Name="imageViewTemplate" DataType="{x:Type viewmodels:ImageFiltersViewModel}">
<views:ImageFiltersView DataContext="{Binding}"></views:ImageFiltersView>
</DataTemplate>
</Window.Resources>
<Grid Background="#2A304D">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" Grid.Column="0">
<StackPanel>
<Image Source="Content/menu.png" Width="25" Margin="15" MouseLeftButtonDown="MenuViewShow"/>
</StackPanel>
</DockPanel>
<DockPanel Grid.Row="1" Grid.Column="0">
<Image Source="Content/folder.png" Width="25" Margin="15" Visibility="Visible" Name="FolderButton" />
</DockPanel>
<DockPanel Grid.Row="2" Grid.Column="0">
<Image Source="Content/image.png" Width="25" Margin="15" Visibility="Visible" Name="ImageButton" MouseLeftButtonDown="ShowImageSettings">
</Image>
</DockPanel>
<DockPanel Grid.Row="3" Grid.Column="0">
<Image Source="Content/save.png" Width="25" Margin="15" Visibility="Visible" Name="SaveButton"/>
</DockPanel>
<ContentControl Grid.RowSpan="7" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="7" Content="{Binding}"></ContentControl>
<!--<ContentControl Grid.ColumnSpan="6" Grid.Column="1" Grid.Row="0" Content="{Binding}"></ContentControl>-->
</Grid>
Представление фильтра изображений открывается в той же логике, но и в другом представлении:
<UserControl.Resources>
<DataTemplate x:Name="imageViewFilterTemplate" DataType="{x:Type viewmodels:ImageFilterOptionOne}">
<views:ImageFilterOptionOne DataContext="{Binding ElementName=ImageContentView}"></views:ImageFilterOptionOne>
</DataTemplate>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" Grid.Column="0">
<StackPanel>
<Image Source="../Content/menu.png" Width="25" Margin="15" MouseLeftButtonDown="ShowFilterOneOptions"/>
</StackPanel>
</DockPanel>
<DockPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="6" Grid.RowSpan="5" Background="#565555"></DockPanel>
<ContentControl Grid.Row="6" Grid.ColumnSpan="8" Grid.Column="0" Content="{Binding}" x:Name="ImageContentView"></ContentControl>
</Grid>
Я думаю, что проблема связана с привязкой DataContext, возможно, мне нужно настроить таргетинг на DataTemplate для привязки или аналогичнойвещь, но я не нашел ничего конкретного.