gpt4 book ai didi

c# - XAML 数据绑定(bind)清晰度

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

想看看是否有人可以帮我解决这个问题?从 XAML 元素到 ViewModel(ex:1) 中的值,或者从 CodeBehind(ex:2) 返回到元素,如 HostName.Text,DataBinding 是否有优势?

<TextBlock Text="{Binding HostName}" /> --- (ex:1)
<TextBlock Name="HostName" /> --- (ex:2)

离岸博彩

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Task;

namespace AppName.Models
{

public class Contact
{
[Key]
public int Id {get; set;}
public string Team { get; set;}
public string FirstName { get; set;}
public string LastName { get; set;}
public string Phone { get; set;}
public string Email { get; set;}
public string Role { get; set;}
public string DisplayName => $"[LastName}, {FirstName}";
}
}

最佳答案

答案很简单,这取决于您的应用和需求。当您构建小型应用程序时,使用代码隐藏或数据绑定(bind)来查看模型并没有太大区别。很容易理解流程以及何时进行更新。但是随着应用程序复杂性的增加和测试代码的需要,您开始使用使代码更易于维护和测试的模式。这就是 MVVM 模式的由来。

在您的代码隐藏文件中测试代码比在您的 ViewModel 类中测试您的业务逻辑并确保它按预期工作更难。

你上面的例子有点简单,因为它是一个只显示文本而不接受输入的 TextBlock。 TextBox 是一个更好的绑定(bind)示例,因为数据可以在 View 模型或 UI 中更改。绑定(bind)使您可以使用属性支持显示的文本,因此从任何方向进行的更改都会自动更新模型属性和 UI。

<TextBox x:Name="Entry" Text="{Binding SelectedValue , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

View 模型:

public class CatalogViewModel : BindableBase
{
private string selectedValue;
public string SelectedValue
{
get { return selectedValue; }
set { SetProperty<string>(ref selectedValue, value); }
}
...
}

替代方法是代码隐藏文件中的大量代码,以保持 TextBox 和数据元素之间的同步。

<TextBox x:Name="Entry2" TextChanged="Entry2_TextChanged" />

代码隐藏:

private string entryText;
public string EntryText
{
get { return entryText; }
set
{
if (value != entryText)
{
entryText = value;
Entry2.Text = entryText;
}
}
}
private void Entry2_TextChanged(object sender, TextChangedEventArgs e)
{
entryText = Entry2.Text;
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
// initialize controls
EntryText = "Default";
}

您现在已将业务逻辑与页面布局相结合,对其中任何一个的更改都会导致大量更改。测试代码的行为更难编写,也更难模拟。

它只会因多个输入控件和更复杂的控件(如 ListView 和 GridView)而变得更加复杂。

如果您对使用 View 模型和数据绑定(bind)的好处感兴趣,您应该阅读 MVVM:https://msdn.microsoft.com/en-us/magazine/dd419663.aspx .

关于c# - XAML 数据绑定(bind)清晰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218103/

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