我想绑定到可以在静态Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If My.Computer.Network.Ping("192.168.1.1") Then
MsgBox("Connection ok")
Else
MsgBox("No Connection")
End If
End Sub
类中找到的Patients
静态属性。这样做会引起争议。
DatabaseService
这里我绑定到列表
namespace MyProject.Database{
static class DatabaseService{
private static ObservableCollection<Patient> _patients;
public static ObservableCollection<Patient> Patients {
get {
return _patients;
}
set {
if(_patients != value) {
_patients = value;
StaticPropertyChanged(null,new PropertyChangedEventArgs("Patients"));
}
}
}
}
}
当我尝试绑定到不同的属性时,它可以正常工作,只需重命名<Controls:FilterableComboBox xmlns:db="clr-namespace:MyProject.Database" ItemsSource="{Binding Path=(db:DatabaseService.Patients)}"/>
Exception thrown: 'System.ArgumentException' in mscorlib.dll ("Cannot bind to the target method because its signature or security transparency is not compatible with that of the delegate type.")
属性即可解决问题。是否有一些我应该警惕的名字冲突?
例如,有一个名称空间Patients
编辑: MyProject.Patients
在DatabaseService
命名空间中,当我尝试在MyProject.Database
命名空间中存在的类上绑定它时,它可以使用no问题
MyProject.Patients
使用以下标记
namespace MyProject.Patients{
class X{
private static ObservableCollection<Patient> _patients;
public static ObservableCollection<Patient> Patients {
get {
return _patients;
}
set {
if(_patients != value) {
_patients = value;
StaticPropertyChanged(null,new PropertyChangedEventArgs("Patients"));
}
}
}
}
}
已解决:问题是我的事件<Controls:FilterableComboBox xmlns:pt="clr-namespace:MyProject.Patients" ItemsSource="{Binding Path=(pt:X.Patients)}"/>
存在于类中,但是PatientsChanged
是如何绑定到静态属性的第二个版本,所以数据绑定思想它应该订阅事件,但是,事件类型与预期的事件类型不匹配,因此引发了异常