如何 debug xaml?

本文介绍了在WPF开发中遇到Binding问题时如何进行调试,包括通过Visual Studio设置WPF Trace Settings为All来查看Output Window中的Binding信息,以及使用PresentationTraceSources.TraceLevel附加属性进行详细跟踪,帮助开发者解决XAML中数据绑定相关的难题。
摘要由CSDN通过智能技术生成

Binding 是 WPF 中的一个强大的功能,但同时这又是让人很纠结的地方,因为在使用 Binding 时,经常会发生一些莫名其妙的问题,例如,编译、运行都没有 exception 抛出,界面的布局也如我们预期那样显示,但是就是不显示值。我们常常在这个问题上花费大量的时间。

通过 msdn 等资源,终于找到了如何 debug xaml 的方法,准确的说,是找到了如何将 Binding 的信息打印到 Output Window 的方法。

一种方式是通过设置 Visual Studio 中 Debugging,另一种是使用附加属性 PresentationTraceSources.TraceLevel。下面解释下如何使用这两种方法:

例如 MainWindow 中定义了一个 Property,然后在它的构造函数中将该 Property 赋值,在 MainWindow 对应的 xaml 文件中,将 TextBlock 的 Text 属性 Binding 到 MainWindow 的 Property 上。如下所示:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        LongWordText = "Demo";
    }

    private string _value;

    public string LongWordText
    {
        get { return _value; }
        set
        {
            _value = value;
            OnPropertyChanged("LongWordText");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;

        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
<Grid>
    <TextBlock Text="{Binding LongWordTest,ElementName=main}" />
</Grid>
运行时,在 UI 上并没有如我们预期的那样,出现 “Demo” 字符串。当然,由于我们的代码比较简短、简单,所以细心的读者肯定发现了ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值