Hallo,
Ich habe für eine Anwendung einen eigenen Dialog auf Basis eines Window-Element erstellt.
Dort kann ich als Parameter bei der Initialisierung einige Dinge per Parameter steuern:
Probleme bereiten gerade die Schaltflächen.
Ich habe diese, wie alles andere auch gebunden, in diesem Fall an die Visibility:
Für die Bindungsvariablen habe ich Fullproperties angelegt, hier exemplarisch für OK:
wie man sieht, nutze ich dafür das INotifyPropertyChange-Interface.
Ebenso habe ich mir eine Fullproperty für die Übergabe angelegt:
Alle anderen parametrisierten Eigenschaften sind auf die gleiche Weise angelegt.
Die Übergabe und Initiierung des Window erfolgt auf diese Weise:
So funktioniert alles, wie es soll. Wenn ich jedoch die Zeile für die DialogButtons wieder einsetze, wird nur die OK-Schaltfläche angezeigt.
Kurios für mein Verständnis ist auch: Wenn ich mir anzeigen lasse, welchen Wert DialogButtons hat, erscheint auch das Eingabefeld nicht?!
Die Anzeige der Buttons steuere ich derzeit über ein switch:
zuvor wurden alle Schaltflächen auf Collapsed gesetzt.
Hat jemand mögliche Erklärungen für das Verhalten?
Falls weitere Infos benötigt werden, stelle ich die gerne noch zur Verfügung.
Danke
Arne
Ich habe für eine Anwendung einen eigenen Dialog auf Basis eines Window-Element erstellt.
Dort kann ich als Parameter bei der Initialisierung einige Dinge per Parameter steuern:
- Titel
- Infotext
- Icon
- mit/ohne Eingabefeld
- Schaltflächenanzeige: OK, OKCancel, Yes, YesNo, YesNoCancel
Probleme bereiten gerade die Schaltflächen.
Ich habe diese, wie alles andere auch gebunden, in diesem Fall an die Visibility:
Code:
<Button Margin="1,0" Padding="10,5" Content="Ok" Click="SendFeedback" Visibility="{Binding BtnOK}"/> <Button Margin="1,0" Padding="10,5" Content="Ja" Click="SendFeedback" Visibility="{Binding BtnYes}"/> <Button Margin="1,0" Padding="10,5" Content="Nein" Click="SendFeedback" Visibility="{Binding BtnNo}"/> <Button Margin="1,0" Padding="10,5" Content="Abbrechen" Click="SendFeedback" Visibility="{Binding BtnCancel}"/>
Code:
private Visibility _btnOK; public Visibility BtnOK { get { return _btnOK; } set { _btnOK = value; OnPropertyChanged("BtnOK"); } }
Ebenso habe ich mir eine Fullproperty für die Übergabe angelegt:
Code:
private MessageBoxButton _dialogButtons; public MessageBoxButton DialogButtons { get { return _dialogButtons; } set { _dialogButtons = value; OnPropertyChanged("DialogButtons"); } }
Die Übergabe und Initiierung des Window erfolgt auf diese Weise:
Code:
DialogBox box = new DialogBox { Owner = this, DataValues = this.DataValues, DialogBoxTitle = "Screenshot senden", DialogStaticText = "Ein Screenshot wurde erstellt, füge unten bitte ein kurze Problembeschreibung ein.\r\nBei Klick auf OK wird diese mit dem Screenshot zusammen per Mail an den Support gesendet.", WithFeedback = true, //DialogButtons = MessageBoxButton.OKCancel }; box.ShowDialog();
Kurios für mein Verständnis ist auch: Wenn ich mir anzeigen lasse, welchen Wert DialogButtons hat, erscheint auch das Eingabefeld nicht?!
Die Anzeige der Buttons steuere ich derzeit über ein switch:
Code:
switch ( this.DialogButtons ) { case MessageBoxButton.OK: BtnOK = Visibility.Visible; break; case MessageBoxButton.OKCancel: BtnOK = Visibility.Visible; BtnCancel = Visibility.Visible; break; case MessageBoxButton.YesNo: BtnYes = Visibility.Visible; BtnNo = Visibility.Visible; break; case MessageBoxButton.YesNoCancel: BtnYes = Visibility.Visible; BtnNo = Visibility.Visible; BtnCancel = Visibility.Visible; break; default: BtnCancel = Visibility.Visible; break; }
Hat jemand mögliche Erklärungen für das Verhalten?
Falls weitere Infos benötigt werden, stelle ich die gerne noch zur Verfügung.
Danke
Arne
Comment