Laden...

[erledigt] Visibility Einstellung speichern

Erstellt von Cuin vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.090 Views
C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren
[erledigt] Visibility Einstellung speichern

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

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

93 Beiträge seit 2008
vor 13 Jahren

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

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

93 Beiträge seit 2008
vor 13 Jahren

Ah super ... war schon eine Weile her, das hab ich wohl damals übersehen. Jetzt hab ich selber auch noch was dabei gelernt 😃

Gruß,
Tom

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

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

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

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

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

Hallo,

Default.ToolBarTrayVisibility ist vom Typ "int".

Habe es jetzt endlich hingekriegt mit dem BooleanToVisibilityConverter.

Vielen Dank für eure Hilfe!

mfg Cuin