myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns
» Datenschutzerklärung
» Impressum

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und Silverlight » Visibility erst nach einem Converter setzen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Visibility erst nach einem Converter setzen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
p!lle
myCSharp.de-Mitglied

avatar-3556.jpg


Dabei seit: 22.02.2007
Beiträge: 987
Entwicklungsumgebung: Visual Studio (Community) 2017


p!lle ist offline

Visibility erst nach einem Converter setzen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Moin,

stehe derzeit vor einem (wahrscheinlich) kleinen Problem, zu dem mir partout keine Lösung einfällt (bzw. keine Schlagwörter für Google einfallen). verwundert

Normalerweise kann man über ein Bindung bzw. ein Markup (mit Konstruktorparameter) ja total einfach eine Visibility setzen:

XML-Code:
<TabItem Visibility="{Binding MeineTolleProperty}"

XML-Code:
<TabItem Visibility="{MeineTolleMarkupExtension MeinTollerKonstrParam}"

Nun benötige ich aber für das Binding/das Markup einen Converter, den ich in den Ressourcen des TabItem definiere, dadurch kann ich erst später im XAML die Visibility setzen:

XML-Code:
<TabItem>
    <TabItem.Visibility>
        ???
    </TabItem.Visibility>
</TabItem>

Für ein Binding lässt sich die Stelle mit den "?" leicht füllen, wie aber macht man es bei einem Markup mit Konstruktorparametern? verwundert
04.03.2019 09:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.02.2012
Beiträge: 1.168
Entwicklungsumgebung: Visual Studio 2017
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Verstehe ich dich richtig, dass Du das Ergebnis von deiner MarkupExtension durch einen Converter jagen willst?

Also analog zu:

XML-Code:
{Binding MeineTolleProperty, Converter={MeinTollerConverter}}

Soll es heißen:

XML-Code:
{MeineTolleMarkupExtension MeinTollerKonstrParam, Converter={MeinTollerConverter}}

Mein erster Versuch wäre sowas:

XML-Code:
{Binding Source={MeineTolleMarkupExtension MeinTollerKonstrParam}, Converter={MeinTollerConverter}}

Beachte aber:
Du bekommst in keiner Weise (egal ob direkt mit Extension oder als Binding-Source) mit, wenn die MarkupExtension einen anderen Wert liefern wird, da die kein Handling dafür hat.


So ganz ist mir aber auch nicht klar, was das überhaupt bezwecken soll.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Palladin007 am 04.03.2019 11:10.

04.03.2019 11:09 Beiträge des Benutzers | zu Buddylist hinzufügen
p!lle
myCSharp.de-Mitglied

avatar-3556.jpg


Dabei seit: 22.02.2007
Beiträge: 987
Entwicklungsumgebung: Visual Studio (Community) 2017

Themenstarter Thema begonnen von p!lle

p!lle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Palladin007:
XML-Code:
<TabItem Visibility={MeineTolleMarkupExtension MeinTollerKonstrParam, Converter={MeinTollerConverter}}

Das geht ja ohne Problem, habe das "Visibility" mal ergänzt.
Nur weiß ich eben nicht, wie ich es angebe, wenn ich es eben über

XML-Code:
<TabItem>
    <TabItem.Visibility>
        ???
    </TabItem.Visibility>
</TabItem>

setzen muss.

Die MarkupExtension liefert ein bool zurück, entsprechend muss für die Visibility ein Converter dazwischen. Augenzwinkern
04.03.2019 11:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.02.2012
Beiträge: 1.168
Entwicklungsumgebung: Visual Studio 2017
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Prinzipiell kannst Du jedes Binding auch ohne MarkupExtension schreiben:

XML-Code:
<Binding Source="{MeineTolleMarkupExtension MeinTollerKonstrParam}">
    <Binding.Converter>
        <MeinTollerConverter />
    </Binding.Converter>
</Binding>

Die IntelliSense bietet dir das "Binding" zwar nicht an, geht aber trotzdem.
04.03.2019 11:28 Beiträge des Benutzers | zu Buddylist hinzufügen
ErfinderDesRades
myCSharp.de-Poweruser/ Experte

avatar-3151.jpg


Dabei seit: 31.01.2008
Beiträge: 5.286


ErfinderDesRades ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hab mal ein  Tutorial verzapft, wo ich derlei Feinheiten der Xaml-Syntax bisserl auf Grund gehe.
Dazu hab ich einfach ein Stück Xaml (fast) ohne jede Syntax-Vereinfachuing formuliert, und anschließend die verschiedenen Vereinfachungen angewendet (Property-Attribute-Syntax, DefaultProperties, Markup-Extensions, TypConverter) - bis schließlich leidlich "normales" Xaml bei rauskommt.
09.03.2019 22:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Monat.
p!lle
myCSharp.de-Mitglied

avatar-3556.jpg


Dabei seit: 22.02.2007
Beiträge: 987
Entwicklungsumgebung: Visual Studio (Community) 2017

Themenstarter Thema begonnen von p!lle

p!lle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Moin,

entschuldigt bitte die verspätete Antwort, war die letzten Wochen kaum online.

Im Endeffekt ist es ja dann doch ziemlich einfach, man ist nur irgendwie immer zu verwöhnt von den ganzen Kurzschreibweisen. Zunge raus

Also entweder so

XML-Code:
<TabItem>
    <TabItem.Visibility>
        <Binding Path="MeineTolleProperty" Converter="{StaticResource meinTollerConverter}" />
    </TabItem.Visibility>
</TabItem>

oder so

XML-Code:
<TabItem>
    <TabItem.Visibility>
        <Binding Source="{MeineTolleMarkupExtension MeinTollerKonstrParam}" Converter="{StaticResource meinTollerConverter}" />
    </TabItem.Visibility>
</TabItem>

Die Ausgangsfrage hat sich mittlerweile aber schon wieder erledigt bzw. die Anforderung hat sich geändert, sodass ich das Ganze aktuell doch nicht brauche.
Nichtsdestotrotz wieder etwas dazugelernt. Daumen hoch
11.04.2019 13:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 2 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 16.06.2019 20:42