gpt4 book ai didi

c# - XAML 绑定(bind)中 IntelliSense 自动完成的强制类型

转载 作者:行者123 更新时间:2023-11-30 16:38:04 25 4
gpt4 key购买 nike

我正在处理一些相当大的 WPF 项目,其中包含大量类和 XAML 设计文件。

但有一件事让我抓狂:IntelliSense Binding 自动完成有时不会显示正确的值(主要是在我无法提供正确的 DataType 并且没有使用烘焙的情况下,例如。 页面内容类型)

因此,实际问题是:是否有某种方法可以强制 IntelliSense 使用特定类型进行自动完成?

作为随机示例,采用此 XAML:

<DataTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
DataType="{x:Type Accounting}">
<ListView ItemsSource="{Binding Payments}">
<ListView.View>
<GridView>
<!--
Auto completion still assumes the type is Accounting
and displays the properties of Accounting instead of
the required Payments.
-->
<GridViewColumn DisplayMemberBinding="{Binding Bank}"/>
</GridView>
</ListView.View>
</ListView>
</DataTemplate>

C# 类:

public class Accounting
{
public List<Payment> Payments { get; set; }
}

public class Payment
{
public string Bank { get; set; }
}

最佳答案

您可以使用 {Binding Path=(xmlNameSpace:TypeName.PropertyName)} 形式强制类型并完成 PropertyName。

这会导致 Binding 将路径视为 attached property ,当附加属性类型与绑定(bind)类型相同时,它会回退到“常规”属性。我不确定尝试将其解析为附加属性是否有任何额外开销,但这足以让 Visual Studio 开始在您键入时自动完成属性。我认为这有点 hack,因为它绝对不是这种语法的预期用途,

在您的特定示例中,它看起来像(根据您的命名空间进行调整):

<GridViewColumn DisplayMemberBinding="{Binding Path=(local:Payment.Bank)}"/>

enter image description here

关于c# - XAML 绑定(bind)中 IntelliSense 自动完成的强制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56166440/

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