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