2012-12-29 36 views
5

Tôi có một ứng dụng F # WPF với các lớp mô hình xem. Các lớp này cần phải được công khai để được sử dụng trong XAML làm kiểu dữ liệu.F # discriminated unions và WPF databinding

Vấn đề là dường như khi sử dụng đệ quy loại F # (và) thì các loại cấp dưới không thể truy cập được - hoặc chúng không xuất hiện. Tức là, ví dụ: ví dụ:

type Foo() = 

    member this.Bar = new Bar() 

and Bar() = 

    member this.Foo = new Foo() 

thì không thể truy cập Bar trong XAML.

Tôi đã thử tiền tố Foo với công chúng và Bar. Tôi cũng đã cố tạo một từ đồng nghĩa. Cả hai thay đổi đó đều không giải quyết được vấn đề.

Đây có phải là cách thức hoạt động hoặc tôi "làm sai" không? Nếu nó là cách nó hoạt động, sau đó tôi có thể buộc các loại cấp dưới (Bar, trong ví dụ) được công khai không?

Cảm ơn! :-)

Cập nhật 1: Khi kiểm tra kỹ hơn (dotPeek) có vẻ như quyền truy cập giống nhau. Trình biên dịch F # tạo ra một lớp Foo bên ngoài tĩnh và một lớp Foo lồng nhau. Nó cũng tương tự với Bar. Tất cả đều được đánh dấu là công khai. Bây giờ tôi lúng túng là tại sao Bar không thể truy cập từ bên trong XAML.

Cập nhật 2: Đã giải quyết. WPF không thích các công đoàn kỳ thị. Một hoặc nhiều loại cấp dưới sử dụng các công đoàn phân biệt đối xử và ngăn không cho nó được sử dụng cho dữ liệu XAML.

Trả lời

7

WPF không thích các công đoàn phân biệt đối xử. Một hoặc nhiều loại cấp dưới sử dụng các công đoàn phân biệt đối xử và ngăn không cho nó được sử dụng cho dữ liệu XAML. Không hoàn toàn rõ ràng nhưng đó là vấn đề.

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