У меня есть привязка к родительскому элементу. Как я могу предоставить тип данных для DataContext в привязке, поэтому intellisense может разрешить связанные свойства?Связывание работает отлично, но intellisense говорит: Не удается разрешить свойство XXX в контексте данных типа 'object'
Связывание прекрасно работает во время выполнения. Итак, у меня есть следующий XAML структура:
<TabControl Name="TabDynamic"
ItemsSource="{Binding TabItems, Mode=OneWay}" ...>
<TabControl.Resources>
<DataTemplate x:Key="TabHeader" DataType="TabItem">
<DockPanel>
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=Header}" />
<Button Command="{Binding ElementName=TabDynamic, Path=DataContext.DeleteTabCommand}"
CommandParameter="{Binding ElementName=TabDynamic, Path=DataContext.TabItems/}">
<Image Source="{DynamicResource DeleteImg}" Height="11" Width="11"></Image>
</Button>
</DockPanel>
</DataTemplate>
<DataTemplate x:Key="TabContent" DataType="viewModels:ConnectionInfoVM">
<views:BufferViewerControl/>
</DataTemplate>
</TabControl.Resources>
</TabControl>
типа данных из DataContext является "ViewModels: ConnectionInfoVM". Intellisense теперь будет подчеркивать оба свойства в DataContext (так подчеркнуты DeleteTabCommand и TabItems).
я уже пытался использовать время разработки определения данных контекста «D:» DataContext в Button
элемента следующим образом:
d:DataContext="{d:DesignInstance viewModels:ConnectionInfosVM}"
Но это не меняет предупреждения IntelliSense.
Я также попытался определить DataType на DataTemplate как «viewModels: ConnectionInfosVM», как и для шаблона контента, но это тоже не изменяет предупреждения intellisense (и, я думаю, это было бы неправильно, поскольку тип данных элемента действительно является TabItem).
Другая попытка была определить DataContext, добавив следующее определение Button
элемента:
<Button.DataContext>
<viewModels:ConnectionInfosVM/>
</Button.DataContext>
Но это тоже не избавиться от предупреждений.
Создает ли VM данные во время разработки для элементов, к которым нужно привязать? – OmegaMan
Нет, во время разработки еще нет данных TabControl.It будет заселен позже на основе сетевой связи. – ptair
Если вы удалите содержимое кнопки, произойдет ли сбой intellisense? Неясно, где происходит ошибка ... если вы можете сузить ее до любой команды или содержимого, которое может быть сказано. Также, какую версию визуальной студии вы используете? Вы пробовали последнюю версию Blend, делает то же самое? – OmegaMan