2017-04-07 2 views
-1

Ich habe ein MultiBinding wie folgt definiert:Verwendung in Ressourcen Bindung ohne Stile

<MultiBinding StringFormat="{0}_{1}"> 
    <Binding Path="..." /> 
    <Binding Path="..." /> 
</MultiBinding> 

Ich brauche es an mehreren Stellen zu verwenden, und will es in meinen Ressourcen zu definieren, wie:

<MultiBinding x:Name="MyDefaultBinding" StringFormat="..."> 
    <!-- etc --> 
</MultiBinding> 

Allerdings kann ich jetzt nicht herausfinden, wie man es benutzt. Ich habe versucht, ein StaticResource wie:

<TextBlock Text="{StaticResource MyDefaultBinding}" 
      Style="{StaticResource SomeOtherStyle}" /> 

Dies gab mir einen Compiler-Fehler: „Ungültige Ressourcentyp: erwartete Typ‚String‘, tatsächliche Typ‚Multibinding‘.“.

Als ich versuchte, es den Zugriff auf eine mit Binding wie:

<TextBlock Text="{Binding Source={StaticResource MyDefaultBinding}}" 
      Style="{StaticResource SomeOtherStyle}" /> 

Es kompiliert, aber der Text in der TextBlock zur Laufzeit wird auf „System.Windows.Data.MultiBinding“ anstelle des Satzes erwarteter Wert.

Ich habe Vorschläge gesehen, die das Einbetten der MultiBinding in eine Style vorschlagen, jedoch habe ich bereits andere freigegebene Stile auf den Steuerelementen definiert, wo ich die Bindung verwenden muss.

Kann ich eine in Ressourcen definierte Bindung auswerten, ohne sie in einen Stil zu integrieren?

+0

Ich glaube nicht, dass dies möglich ist. Ich denke jedoch, dass Sie die vorhandenen Stile mit "BaseOn" in Ihrem neuen Stil erweitern können. Auf diese Weise haben Sie einen Stil mit dem Binding und einen ohne den Style immer nur einmal codiert. – wkl

Antwort

0

Man kann nicht wirklich eine verbindliche Ressource wieder verwenden, wie sie ist, aber man könnte eine Markup-Erweiterung erstellen, die die Ressource gilt wie hier vorgeschlagen:

Binding as a Resource

Verwandte Themen