Ich habe ein C#/WPF-Projekt in Visual Studio 2013. Das Projekt enthält ein Hauptfenster und mehrere Popup-Fenster. Die meisten dieser Popup-Fenster enthalten Steuerelemente, einschließlich Schaltflächen.C# finde alle WPF Windows
Ich muss alle Schaltflächen in allen Fenstern finden, oder eigentlich muss ich finden, was die "IsEnabled" -Eigenschaft für alle Schaltflächen gebunden ist. Im folgenden Code möchte ich "IsChangePwdEnabled" aller Schaltflächen finden/extrahieren.
Der folgende Code ist nur ein Beispiel für ein Fenster und einen Knopf, ich habe 30-40 Fenster in meiner Lösung und alle mit mehreren Tasten auf.
Gibt es eine Lösung, um diese Daten zu extrahieren? Ich habe versucht mit der LogicalTreeHelper.GetChildren(), in der Initialisierung des Programms, aber mit dieser Funktion brauche ich die Parrent des Objekts, das gesucht werden muss, und ich habe das nicht, weil das Fensterobjekt nur erstellt wird wenn gebraucht.
Beispiel der Pop-up-Fenster (Anmeldung):
<window x:Class="ManagedHMI.CLogonDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ManagedHMI"
WindowStyle="ToolWindow"
Topmost="True"
Title="Logon" SizeToContent="WidthAndHeight"
>
<Grid Margin="5,5,5,5" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
...
<Button x:Name="ChangePwd" Width="90" Click="ChangePwd_Click" IsEnabled="{Binding Path=IsChangePwdEnabled, UpdateSourceTrigger=PropertyChanged}">
-Code, der das Anmeldefenster erstellt:
m_LogonDlg = new CLogonDialog(Logon, UnlockPc, ChangePassword, userDomain, m_language);
In meinem Programm, das "IsEnabled" Eigenschaft verwendet wird, um zu prüfen, auf welche Tasten ein Benutzer Zugriffsrechte hat, und ich möchte diese Funktionalität verwenden, um einen Export von Benutzerrechten für alle Schaltflächen zu machen.
Als Hinweis, das Setzen von 'Update = PropertyChanged' auf der IsEnabled ist Bindung sinnlos. Die Bindung ist OneWay und aktualisiert daher niemals ihre Quelle. – Clemens