У меня есть ViewModel, у которого есть свойство типа InternalViewModel, которое, в свою очередь, имеет свойство Collection.DesignInstance: свойство вложенной коллекции не распознано
Учитывая, что в целях в DataContext является экземпляром ViewModel, связывающий внутреннюю коллекцию требует следующий синтаксис:
{Binding InternalViewModelProperty.Collection}
Во время выполнения он работает так, как ожидалось. Однако, если я использую DesignInstance в качестве прокси-сервера для представления объекта ViewModel, во время разработки он вообще не увидит коллекцию (например, не генерируется генерация столбцов).
Если я обманываю и выставить свойство Collection как свойство ViewModel и изменяет связывание:
{Binding Collection}
Затем он снова работает во время разработки.
Есть ли причина, по которой коллекция, вложенная в собственность другого объекта, принадлежащего ViewModel, ведет себя по-разному во время разработки? Это ограничение DesignInstance?
Вот код XAML:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:LocalNS"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
mc:Ignorable="d"
x:Class="MyUserControl"
d:DataContext="{d:DesignInstance Type=local:MyViewModel}"
>
<Grid>
<DataGrid ItemsSource="{Binding InternalViewModelProperty.Collection}"/>
</Grid>
</UserControl>
Предоставляет ли InternalViewModelProperty интерфейс INotifyPropertyChanged? – Tony
Да, да. Тем не менее, свойство Collection является readonly, поэтому PropertyChanged никогда не будет повышаться с помощью «Collection» в качестве измененного свойства. AFAIK это не должно быть проблемой, не так ли? – Crono
Покажите нам xaml, как вы установили DesignInstance? –