0
作爲wpf和MVVM的新手,對於我偶然發現對話結果這個小問題(或者缺少它)並沒有太長的期限。幸運的是,關於這個主題的問題數量至少讓我感到我並不孤單。將MVVM WPF C#代碼翻譯成vb.net
看過無數的答案,似乎最類似於MVVM原理(至少對我的新的和相對不熟練的眼睛)是由喬懷特here給出的。
到目前爲止它很好,直到它將它翻譯成VB。
我最終得到的是這個;
Imports System.windows
Public NotInheritable Class DialogCloser
Private Sub New()
End Sub
Public Shared ReadOnly DialogResultProperty As DependencyProperty = DependencyProperty.RegisterAttached("DialogResult", GetType(System.Nullable(Of Boolean)), GetType(DialogCloser), New PropertyMetadata(DialogResultChanged))
Private Shared Sub DialogResultChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim window = TryCast(d, Window)
If window IsNot Nothing Then
window.DialogResult = TryCast(e.NewValue, System.Nullable(Of Boolean))
End If
End Sub
Public Shared Sub SetDialogResult(target As Window, value As System.Nullable(Of Boolean))
target.SetValue(DialogResultProperty, value)
End Sub
End Class
這給了我兩個特定錯誤
- 私人共享子的參數d沒有指定參數DilogResultChanged
- TryCast操作數必須是引用類型,但布爾?是值類型
當我再次查看Joe發佈的原始代碼時,似乎沒有爲'd'傳遞的參數,而且trycast與它已轉換的內容大致相同。那麼,爲什麼在轉換爲VB時拋出錯誤呢?
感謝您提供任何有關此事的信息,以及您可能需要糾正的任何建議。
非常感謝。我習慣於在c#中替換+ =的AddressOf,但是因爲我沒有看到它,所以我沒有想到。同樣我也應該想到直接投。非常感謝。 – 2014-10-28 11:25:11