Ich habe festgestellt, dass ähnliche Fragen schon einmal gestellt wurden, aber ich habe keine detaillierten Beispiele gefunden.Wie verwendet man die Abhängigkeitseigenschaft, um den Parameter im Konstruktor eines Benutzersteuerelements zu ersetzen?
Ich habe ein winform Programm, hat seinen Konstruktor einen Parameter cn:
public AddFailure(ProSimConnect cn)// constructor in winform
{
this.connection = cn;
InitializeComponent();
...
}
Jetzt muss ich es in einem Usercontrol in WPF simulieren und in Mainwindow setzen.
In MainWindow.xaml:
<Border ...>
<IOS:Core_System/>
</Border>
Ich möchte, dies zu tun, aber ich weiß, ich kann nicht, weil es keine Parameter haben sollte: Ich versuche
public Core_System(ProSimConnect cn)// constructor in UserControl
{
this.cn = connection;
InitializeComponent();
...
}
Daher Abhängigkeit zu verwenden Eigenschaft:
public partial class Core_System : UserControl
{
ProSimConnect connection;
//dependency property
public ProSimConnect cn
{
get { return (ProSimConnect) GetValue(connectionProperty); }
set { SetValue(connectionProperty, value); }
}
public static readonly DependencyProperty connectionProperty =
DependencyProperty.Register("cn", typeof(ProSimConnect),typeof(Core_System));
// constructor in UserControl
public Core_System()
{
this.connection = cn;
InitializeComponent();
...
}
...
}
Es funktioniert nicht - es meldet "Null" Ausnahme. Wo liege ich falsch? Vielen Dank.
Dies ist die Funktion, die die Parameter im Konstruktor des Usercontrol verwenden müssen:
Failure []getSelectedFailures()
{
return cn.getFailures().Where(failure => failure_name.Contains(failure.name)).ToArray();
}
Die Lage Ich nenne es ist:
public partial class Core_System : UserControl
{
...
private void button_Engine_1_On_Fire(object sender, RoutedEventArgs e)
{
...
ArmedFailure.create(getSelectedFailures());
}
}
Eine Abhängigkeitseigenschaft kann nicht festgelegt werden, bevor der Konstruktor zurückgegeben wurde ... – mm8
Hi @ mm8, meinst du ich muss es nach dem Konstruktor setzen? – water
Sie können jeden Code, der ProSimConnect verwendet, vom Konstruktor des UserControls in einen Callback für Abhängigkeitseigenschaften verschieben. Siehe meine Antwort. – mm8