2011-11-10 36 views
5

Tôi đang gặp vấn đề về ràng buộc dữ liệu (một câu hỏi riêng), và thông thường khi tôi viết mã, tôi có thể sử dụng trình gỡ rối để thực hiện, và nhấn điểm ngắt. Có lẽ một vấn đề đơn giản đã đưa tôi cả ngày, không có độ phân giải (nhận được rất thất vọng bây giờ), bởi vì tôi không biết làm thế nào để "chạy trình gỡ rối" trên các ràng buộc dữ liệu XAML của tôi.Có cách nào để gỡ lỗi hiệu quả các ràng buộc dữ liệu WPF không?

Nếu có ai đó có thể giải thích cách thực hiện việc này, nó sẽ được đánh giá cao.

+0

Cảm ơn tất cả các câu trả lời tuyệt vời. Mọi người +1. – Sako73

Trả lời

8

Tôi không có ý tưởng nếu VS cung cấp một cách dễ dàng để ràng buộc gỡ lỗi, nhưng tôi thường sử dụng Snoop để gỡ lỗi bindings

Đó là một công cụ mà sẽ đi qua một ứng dụng WPF và cung cấp cho bạn một TreeView của Tree trực quan của ứng dụng . Bạn có thể chọn một phần tử để xem đó là DataContext và các thuộc tính khác. Nếu có bất kỳ lỗi ràng buộc nào, thuộc tính thường được đánh dấu và nó sẽ cho biết lỗi là gì. Nếu ràng buộc không thành công vì thuộc tính không tồn tại, tôi thường có thể theo dõi DataContext và tìm ra nơi tôi đã đi sai trong ràng buộc của mình.

+0

Snoop đã là một ơn trời cho tôi với tất cả các sắc thái nhỏ của databinding trong WPF. – Tim

+0

Sigh ... đã chịu đựng những thất bại thầm lặng trong nhiều tháng. Cuối cùng tìm thấy một cái gì đó mà làm cho họ to hơn một chút. –

1

Thêm trình chuyển đổi giá trị giả vào kết buộc của bạn. Đặt điểm ngắt bên trong trình biến đổi giá trị. Ngoài ra kiểm tra cửa sổ đầu ra gỡ lỗi trong Visual Studio cho bất kỳ lỗi ràng buộc.

1

Bạn có thể nhận được một số thông tin cơ bản về lỗi liên kết trong Cửa sổ đầu ra trong Visual Studio. Nó sẽ hiển thị lỗi đường dẫn biểu thức ràng buộc và dòng mà lỗi xảy ra.

3

thêm bộ chuyển đổi hình nộm

<local:DebuggerConverter x:Key="DebuggerConverter" /> 

<TextBlock Text={Binding ToSomething, Converter={StaticResource DebuggerConverter}} /> 

bộ chuyển đổi

public class DebuggerConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    // Set breakpoint here 
    return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    // Set breakpoint here 
    return value; 
    } 

    #endregion 
} 

hoặc sử dụng này và nhìn vào cửa sổ đầu ra của bạn

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"> 
    <TextBlock Text={Binding ToSomething, diagnostics:PresentationTraceSources.TraceLevel=High" /> 
</Window> 

hy vọng điều này giúp

1

Khi tôi bắt đầu với WPF, cái này là vấn đề chính mà tôi phải đối mặt để gỡ lỗi các ràng buộc của mình. Mỗi khi nhìn vào cửa sổ đầu ra và tìm kiếm ràng buộc của bạn có vẻ cồng kềnh cho các ứng dụng rất lớn. Sau đó, tôi đã xem qua bài viết tuyệt vời này với sự hiểu biết chi tiết về Bindings - http://bea.stollnitz.com/blog/index.php?s=presentationtrace

Hy vọng rằng, điều này có thể giúp bạn quá ... :)

Các vấn đề liên quan