【问题标题】:How can I bind a property to a TextBox如何将属性绑定到文本框
【发布时间】:2023-04-06 18:47:01
【问题描述】:

我知道,也许这是一个简单的问题,但我不知道如何实现:

我有我的 xaml 代码:

<phone:PhoneApplicationPage.Background>
        <ImageBrush ImageSource="/conTgo;component/resources/images/bg_settings.png" Stretch="None"/>
    </phone:PhoneApplicationPage.Background>
    <TextBlock TextWrapping="Wrap" Text="{Binding VersionNumber}" Foreground="{StaticResource PhoneAccentBrush}" FontFamily="Segoe WP Black" FontSize="26.667" TextAlignment="Center" LineHeight="16"/>
</phone:PhoneApplicationPage>

在我后面的代码中:

 public string VersionNumber { get; set; }

我怎样才能意识到这一点?

【问题讨论】:

  • 虽然以下答案中解释的选项有效,但它可能存在长期可维护性问题。我建议您阅读一些关于 MVVM 模式以及如何在 Windows Phone 上应用的内容:bing.com/search?q=MVVM+Windows+Phone

标签: c# silverlight windows-phone-7 silverlight-4.0 silverlight-3.0


【解决方案1】:

强烈建议将 MVVM 模式用于 Silverlight 开发,并且非常适用于此类情况,并且可以更好地设置代码以进行单元测试。

但是,如果您绑定到的属性直接驻留在您的控件中并且您希望将其保留在那里,那么您的控件将需要实现 INotifyPropertyChanged 以便该属性挂钩到 Silverlight(或 WPF)的更改通知:

public class YourControl : Control, INotifyPropertyChanged
{

    public string VersionNumber {
        get { return versionNumber; }
        set {
            versionNumber = value;
            NotifyPropertyChanged("VersionNumber");
        }         
    }
    private string versionNumber;

    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(String info) {
        if (PropertyChanged != null) {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

同样,我肯定会推荐一种 MVVM 方法。

【讨论】:

  • 虽然这可以完成工作,但我认为在控件中实现 INotifyPropertyChanged 并将其自身设置为数据上下文并不是一个好主意。模板绑定机制旨在让控件模板结构将属性绑定到它自己的控件属性值。 INotifyPropertyChanged 和 DataContext 旨在将外部数据导出到视图中。这是建议使用错误的工具来完成这项工作。
  • 我得到了那个 Murven,我尽可能插入 MVVM。要了解绝对基础知识并查看适用于此特定示例的更改通知流程,我的回答是合适的。
  • 好的,这很酷。我只是认为明确地写出来很重要,这样提出问题的人和搜索网站的其他人都不会认为这是此类问题的唯一答案。
【解决方案2】:

绑定在您的数据上下文中搜索属性。因此,如果您已将该属性添加到您的页面,那么您必须将您的页面设置为它自己的数据上下文。

在页面的构造函数中,在调用“InitializeComponent()”之后,添加:

this.DataContext = this;

这应该可以解决问题。

此方法适用于小型应用程序。如果你想制作更大、更结构化的应用程序,你可能想了解 MVVM 模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多