gpt4 book ai didi

c# - 绑定(bind)工作正常,但智能感知显示 : Cannot resolve property XXX in data context of type 'object'

转载 作者:太空狗 更新时间:2023-10-29 23:37:10 24 4
gpt4 key购买 nike

我有一个父元素的绑定(bind)。如何在绑定(bind)中为 DataContext 提供数据类型,以便智能感知可以解析绑定(bind)的属性?

绑定(bind)在运行时工作正常。所以,我有以下 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 都带有下划线)。

我已经尝试在 Button 元素中使用设计时数据上下文定义“d:DataContext”,如下所示:

d:DataContext="{d:DesignInstance viewModels:ConnectionInfosVM}"

但这不会改变智能感知警告。

我还尝试将 DataTemplate 上的 DataType 定义为“viewModels:ConnectionInfosVM”,就像我对内容模板所做的那样,但这也不会改变智能感知警告(我猜这是错误的,因为数据元素的类型确实是 TabItem)。

另一种尝试是通过将以下内容添加到 Button 元素定义来定义 DataContext:

<Button.DataContext>
<viewModels:ConnectionInfosVM/>
</Button.DataContext>

但这也不能消除警告。

最佳答案

我至少找到了解决上述问题的方法。我正在代码隐藏中设置相关窗口的 DataContext。我示例中的 TabControl 只是继承了 DataContext,它是一个 ConnectionInfosVM。

为了修复这些警告(当然还有通过定位器提供 DataContext 获得的灵 active ),我在 XAML 中定义了 DataContext,如下所示:

<UserControl ...
DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=ConnectionInfosVM}">

看来 intellisense 现在可以解析这些引用了。但另一方面,我还将 DataTemplate 中包含的 TextBlock 更改为以下内容:

 <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabItem}}, Path=DataContext.Address}" />

现在 TabItemDataContext 实际上是一种不同的类型,因为它是 TabItem 的支持对象的类型。所以在这种情况下,intellisense 无法找到 Property 地址。

因此,问题仍然存在,是否有可能在 DataTemplate 中定义的绑定(bind)中定义 DataContext 的类型?

关于c# - 绑定(bind)工作正常,但智能感知显示 : Cannot resolve property XXX in data context of type 'object' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38202503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com