У меня есть некоторые проблемы с созданием динамического 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.