2017-01-04 2 views
-1

Zum Beispiel:Sollwert von Strukturen in XAML mit Static

xmlns:sys="clr-namespace:System;assembly=mscorlib" 
<sys:String x:Key="Str1">Hello World</sys:String> 
<sys:Int32 x:Key="Int1">1</sys:Int32> 

Ist es nun möglich, die inneren Teile mit StaticResources zu ersetzen, so etwas wie:

<sys:String x:Key="Str1">{StaticResource StrRes}</sys:String> 
<sys:Int32 x:Key="Int1">{StaticResource IntRes}</sys:Int32> 

Antwort

2

Nein, ich glaube nicht, damit. Die Werte, die Sie den im XAML-Markup definierten unveränderlichen Strukturen zuweisen, müssen Kompilierzeitkonstanten sein.

Aber warum brauchen Sie das überhaupt? Was ist der Sinn der Definition einer anderen XAML-Ressource mit genau dem gleichen Wert wie eine bereits vorhandene Ressource? Dann können Sie die ursprüngliche Ressource auch direkt verwenden/referenzieren.

Vielleicht möchten Sie Ihre eigenen "proxy" Abhängigkeitsobjekt mit einem String-Eigenschaft verwenden:

public class MyString : DependencyObject 
{ 
    public static readonly DependencyProperty TheStringProperty = 
     DependencyProperty.Register("TheString", typeof(string), typeof(MyString)); 

    public string TheString 
    { 
     get { return (string)GetValue(TheStringProperty); } 
     set { SetValue(TheStringProperty, value); } 
    } 
} 

<sys:String x:Key="Str1">Hello World</sys:String> 
<local:MyString x:Key="StrRes" TheString="{StaticResource Str1}" /> 
... 
<TextBlock Text="{Binding TheString, Source={StaticResource StrRes}}" />