gpt4 book ai didi

c# - 有没有办法将 2 个(或更多)WPF 项绑定(bind)到 C# 中的单个属性?

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:11 24 4
gpt4 key购买 nike

我的类包含一个 address 属性(字符串类型),但我的 WPF 窗口包含几个地址文本框(门牌号、街道名称和可选的第二行地址 - 城镇和邮政编码类中确实有单独的字段)。我想将它们全部放入类中的单个 address 字符串中,用逗号分隔(例如“43, Whitefield Road, Princesshire”)。有没有办法通过绑定(bind)或仅在代码中手动执行此操作?

enter image description here

最佳答案

将所有字段绑定(bind)到类的地址属性,然后使用值转换器来确定地址的哪些组件适用。在转换器中有一个属性允许您确定要操作的子字符串:

public class AddressSeparatorConverter : IValueConverter
{
///<summary>
/// Index of the substring element of the address to be manipulated (read/edited).
///</summary>
public int SubStringIdx { get; set; }

...
}

然后当您执行转换时,您只需使用 , 分隔符拆分字符串并返回由 SubStringIdx 指定的子字符串:

address.Split(',')[SubStringIdx]

当您绑定(bind)到可编辑控件时,您需要确保为 IValueConverter.Convert 提供实现。和 IValueConverter.ConvertBack方法。

要更进一步,您可以在 Converters.xaml 文件中提供不同的转换器定义来处理地址的各种子组件:

<converters:AddressSeparatorConverter x:Key="AddressToHouseNumberConverter" SubStringIdx="0"/>
<converters:AddressSeparatorConverter x:Key="AddressToStreetNameConverter" SubStringIdx="1"/>
...

然后当绑定(bind)到您的控件时,您将通过其键调用适当的转换器:

<TextBox Text="{Binding Address, Converter={StaticResource AddressToStreetNameConverter}}"/>

我现在无法访问 IDE,所以请接受代码片段可能不是 100% 正确,但你应该了解它的要点。

关于c# - 有没有办法将 2 个(或更多)WPF 项绑定(bind)到 C# 中的单个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833062/

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