我有一个绑定到父元素。如何在绑定中为DataContext提供数据类型,因此intellisense可以解析绑定的属性?绑定工作正常,但intellisense说:无法解析类型'对象'的数据上下文中的属性XXX
绑定在运行时正常工作。因此,我有以下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}"
但这并不改变智能感知警告。
我也尝试将DataTemplate上的DataType定义为“viewModels:ConnectionInfosVM”,就像我为内容模板做的那样,但是这也不会改变智能感知警告(我猜会错误的,因为元素的数据类型实际上是一个TabItem)。
另一种尝试是通过添加定义的DataContext以下的Button
元素定义:
<Button.DataContext>
<viewModels:ConnectionInfosVM/>
</Button.DataContext>
但是,这也并不摆脱警告。
VM是否在设计时间内为要绑定的项目生成数据? – OmegaMan
不,在设计时这个TabControl没有数据。它稍后基于网络通信而被填充。 – ptair
如果您删除按钮的内容,智能感应故障是否仍然发生?目前还不清楚错误发生在哪里......如果你可以缩小到命令或内容,这可能是说。你也使用哪个版本的视觉工作室?你有没有尝试过最新的Blend版本,同样的事情发生了吗? – OmegaMan