Hallo,
ist es irgendwie möglich in einer WPF-Anwendung Daten vom Typ Visibility abzuspeichern?
Also unter Properties.Settings?
Oder geht das nur mit dem Umweg über Zahlen? (Z.b. 1=Visibile, 2=Hidden, 3=Collapsed)
mfg Cuin
Hallo,
da Visibility ein Enum ist wäre der Weg über die Zahlen durchaus sinnvoll.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo,
es ist möglich. Dazu musst du allerdings (soweit ich informiert bin) über die Behind-Datei (Settings.Designer.cs) das Property manuell mit der Hand definieren. Allerdings kannst du dir dann nichts mehr vom Designer generieren lassen, da sonst die Einstellungen jedesmal gelöscht werden. Ist von dem Standpunkt leider nicht die optimale Lösung aber die einzige die ich gefunden habe.
In deinem Fall könnte das zB so aussehen:
[global angaben ... ]
[global::System.Configuration.DefaultSettingValueAttribute("Visible")]
public VisibilityTypes VisibilityTyp {
get { return (VisibilityTypes)(this["VisibilityTyp"])); }
set { this["VisibilityTyp"] = value;
}
So in etwa müsste es gehen (Code ungetestet).
Das Enum VisiblityTypes müsstest du natürlich schon irgendwo definiert haben.
Gruß,
Tom
Hallo,
Allerdings kannst du dir dann nichts mehr vom Designer generieren lassen, da sonst die Einstellungen jedesmal gelöscht werden.
Deshalb ist die Designer-generierte Klasse mit partial
gekennzeichnet damit der eigene Code in eine separate Datei geschrieben werden kann. Dann wird nichts mehr überschrieben 😉
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Ah super ... war schon eine Weile her, das hab ich wohl damals übersehen. Jetzt hab ich selber auch noch was dabei gelernt 😃
Gruß,
Tom
Danke für die schnellen Antworten 😃
Habe garnicht daran gedacht, dass Visibility vom Typ Enum ist. Funktioniert jetzt (fast) alles super.
Mein einziges Problem ist jetzt noch, dass ich die Visibility zwar mit
ToolBarTray.Visibility = (Visibility)settings.ToolBarTrayVisibility;
abrufen kann, ich würde das aber gerne per xaml automatisch machen lassen, also so:
Visibility="{Binding Source={x:Static Properties:Settings.Default}, Path=ToolBarTrayVisibility}
Aber irgendwie tut sich da nix. Habe ich was falsch gemacht?
mfg Cuin
Hallo,
Habe garnicht daran gedacht, dass Visibility vom Typ Enum ist.
Hier hilft :rtfm: und [Hinweis] Wie poste ich richtig? Punkt 1.1 😉
Wie Settings per XAML gebunden werden zeigt zB Configuration with DataBinding
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Habe garnicht daran gedacht, dass Visibility vom Typ Enum ist.
Damit habe ich eig. gemeint, dass ich garnicht darauf gekommen bin, mir die Enum-Funktionaltität nützlich zu machen. D.h. dass ich mir die Doku noch öfter angucken hätte können und wäre trotzdem nicht auf die Idee gekommen^^ Ab und zu fehlt halt ein kleiner schubser 😉 Danke nochmals für den Tipp.
Habe mir die genannte Seite mehrmals durchgelesen... das Problem konnte ich leider trotzdem nicht lösen... hier mal ein Code-Auszug:
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Test.Properties"
Title="Test" Name="TestWindow"
Closing="TestWindow_Closing">
<Window.Resources>
<local:Settings x:Key="settings" />
</Window.Resources>
<DockPanel Name="dockpanelMain" DataContext="{StaticResource settings}">
<ToolBarTray Name="ToolBarTray" Visibility="{Binding Path=Default.ToolBarTrayVisibility}">
...
mfg Cuin
Hallo,
von welchem Typ ist jetzt Default.ToolBarTrayVisibility? Wenn es nicht vom Typ Visibility ist dann nimm zB einen Converter der das anpasst.
Was bisher noch gar nicht erwähnt wurde: Wenn es nur um die Zustände Visible und Collapsed geth dann nimm ein bool und den entsprechenden BooleanToVisibilityConverter.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Hallo,
Default.ToolBarTrayVisibility ist vom Typ "int".
Habe es jetzt endlich hingekriegt mit dem BooleanToVisibilityConverter.
Vielen Dank für eure Hilfe!
mfg Cuin