Многопользовательский Datacontext, управляемый родительским Datacontext - PullRequest
0 голосов
/ 13 октября 2019

У меня есть некоторые проблемы с созданием динамического usercontrol / Datacontext.

У меня есть родительская модель: ViewModelMultiFrame, все это создает коллекцию дочерних элементов Модель "ViewModelFrame"

public ViewModelMultiFrame()
   {

            _sess = new Session("XXXX", "https://api-XXX.com");
            _sess.Connect();           

            if (_sess.State == SessionState.Connected)
            {
             _Collection = new ObservableCollection<ViewModelFrame>();
             ViewModelFrame frame = new ViewModelFrame(ref _sess);
             frame.row = 0;
             frame.column = 0;
             frame.timeSpan = "W1";
             _Collection.Add(frame);                

             ViewModelFrame frame2 = new ViewModelFrame(ref _sess);
             frame2.row = 0;
             frame2.column = 1;
             frame2.timeSpan = "D1";
             _Collection.Add(frame2);
            }
    }

СейчасMainView загрузит usercontrol и установит их текст данных на лету, что находится в _collection.

    <UserControl.DataContext>
            <Model:ViewModelMultiFrame/>
        </UserControl.DataContext>



        <ItemsControl Name="icTodoList" ItemsSource="{Binding Collection}" >

            <ItemsControl.ItemTemplate>
                <DataTemplate>

                        <Views:ViewFrame DataContext="{Binding}"/>

                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>

                    <Grid IsItemsHost="True" Background="Pink">

                        <Grid.RowDefinitions  >
                            <RowDefinition/>  
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions  >
                            <ColumnDefinition />
                            <ColumnDefinition />                     
                        </Grid.ColumnDefinitions>

                    </Grid>

                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemContainerStyle>
                    <Style TargetType="{x:Type ContentPresenter}">
                        <Setter Property="Grid.Row" Value="{Binding row}"/>
                    <Setter Property="Grid.Column" Value="{Binding column}"/>



                    </Style>
                </ItemsControl.ItemContainerStyle>

        </ItemsControl>


    </UserControl>
  • Отсюда, что работает, _sess ref работает в дочернем канале данных,свойства столбца / строк работают только во встроенном XAML (правильно размещая дочерний usercontrol в сетке), но на самом деле только ref _sess действительно установлен в дочернем текстовом тексте (это позволяет мне думать, что дочерний текстовый текст данных установлен правильно), но другое дочернее свойствоне установлено: frame.row = null;frame.column = null;frame.timeSpan = null;

    Видите ли вы что-то не так в архитектуре? Мне действительно нужно управлять потомками от родителя здесь.

обычно я бы использовал коллекцию usercontrol над моделью, но я не знаю, как изменить позицию parent_grid от child.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...