C# WPF Потеря DataContexta

Есть Контекст-элемента списка с такими полями

  public Dictionary<int,string> OrderTypes
    {
        get => _orders;
        set => SetPropertyValue(ref _orders, value);
    }
    /// <summary>
    /// Тип приказа
    /// </summary>
    public int OrderType
    {
        get => _orderType;
        set => SetPropertyValue(ref _orderType, value);
    }

Есть главный контекст с полем

    public ObservableCollection<RoadOrder> RoadOrders
    {
        get => _roadOrders;
        set => SetPropertyValue(ref _roadOrders, value);
    }

И есть такой элемент вёрстки

  <ItemsControl 
                ItemsSource="{Binding DataContext.RoadOrders, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GroupBox}}}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <ContentControl>
                                <ContentControl.Style>
                                    <Style TargetType="ContentControl">
                                        <Setter Property="ContentTemplate" Value="{x:Null}"/>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding OrderType}" Value="1">
                                                <Setter Property="ContentTemplate" Value="{StaticResource Order1}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding OrderType}" Value="2">
                                                <Setter Property="ContentTemplate" Value="{StaticResource Order2}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding OrderType}" Value="3">
                                                <Setter Property="ContentTemplate" Value="{StaticResource Order3}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding OrderType}" Value="4">
                                                <Setter Property="ContentTemplate" Value="{StaticResource Order4}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding OrderType}" Value="5">
                                                <Setter Property="ContentTemplate" Value="{StaticResource Order5}"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding OrderType}" Value="6">
                                                <Setter Property="ContentTemplate" Value="{StaticResource Order6}"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </ContentControl.Style>
                            </ContentControl>
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>

Пример одного из OrderTemplate-ов

 <DataTemplate x:Key="Order1">
        <Grid DataContext="{Binding DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>

            
            <StackPanel HorizontalAlignment="Left" Grid.ColumnSpan="3" MinWidth="400" Margin="30 10 0 0" >
                <TextBlock Text="Тип приказа"/>
                <ComboBox 
                    ItemsSource="{Binding OrderTypes}" 
                    SelectedValue="{Binding OrderType}"
                    SelectedValuePath="Key"
                    DisplayMemberPath="Value"
                    />
                <TextBlock Text="ФИО"/>
                <TextBox Text="{Binding RequesterFIO}"/>
                <TextBlock Text="Должность ДСП/ДНЦ"/>
                <TextBox Text="{Binding RequestrerPosition}"/>
                <TextBlock Text="Номер приказа"/>
                <TextBox Text="{Binding OrderNumber}"/>
            </StackPanel>

            <StackPanel  Grid.Column="3" Grid.ColumnSpan="2" Margin="0 10 30 10 " >
                <TextBlock Text="Дата"/>
                <TextBox Text="{Binding OrderDate, StringFormat=dd.MM.yyyy}"/>
                <TextBlock Text="Время"/>
                <TextBox Text="{Binding OrderTime ,StringFormat=HH.mm}"/>
                <TextBlock Text="Литер светофора"/>
                <TextBox Text="{Binding LightLiter }"/>
                <TextBlock Text="Номер пути"/>
                <TextBox Text="{Binding RoadNumber}"/>
            </StackPanel>

        </Grid>
    </DataTemplate>

В OrderTemplate лежат просто TextBox-ы, прибинженные к текущему объекту из Списка RoadOrders, собственно проблема заключается в том, что при изменении OrderType через ComboBox, теряется ссылка на DataContex внутри OrderTeplate, т.е OrderTemplate не знает с каким элементом ему работать. Как это можно исправить?


Ответы (0 шт):