gpt4 book ai didi

WPF MVVM 与特定类型的绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 10:14:07 25 4
gpt4 key购买 nike

我正在尝试在我的 WPF 应用程序中实现 MVVM 设计模式,但是在将我的 View 与我的 View 模型绑定(bind)时遇到了一些问题。

在我的一个 ViewModel 中,我具有以下属性:

public IPEndPoint EndPoint
{
get { return _serverInfos.EndPoint; }
private set
{
_serverInfos.EndPoint = value;
RaisePropertyChanged("EndPoint");
}
}

我想像这样在相关 View 中绑定(bind)这个属性:
<TextBox Text="{Binding EndPoint.Address}" />
<TextBox Text="{Binding EndPoint.Port}" />

EndPoint.Port 绑定(bind)按预期工作,但另一个没有,因为 EndPoint.Address 不是字符串(它是 IPAddress)。当然,我可以定义两个字符串属性而不是一个 IPEndPoint,但我认为这不是一个好的解决方案。

当我想将 Enums 转换为 int 时,我也遇到了同样的问题:
<ComboBox SelectedIndex="{Binding MyEnumProperty}" />

我该如何解决这些问题?

感谢您的帮助。

最佳答案

通常,您希望 View 模型从模型中获取内容并以 View 可以使用的方式公开它们。像这样

  • MyEnumProperty应该是 System.Int32 ( int ) 对于 ComboBox.SelectedIndex致消费者
  • 您可能应该为 EndPointPort 实现两个单独的属性。和 EndPointAddress , 和 EndPointAddress应该是 string转换为 IPAddress使用模型时

  • 您可以使用 IValueConverter s 对于这两者,但是如果它所做的只是像模型一样,那么您首先会减少单独 View 模型的一些效用。

    关于WPF MVVM 与特定类型的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28864860/

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