En utilisant des objets statiques dans le code XAML qui ont été créés dans le code Silverlight
Je ne pouvais pas obtenir que cela fonctionne dans Silverlight, j'ai donc créé deux projets de test. Un simple projet WPF et un simple projet Silverlight que les deux faire une seule chose: définir un public static readonly variable dans le code, et l'utiliser dans un complètement à nu les os XAML. Dans WPF, fonctionne sans accroc. Dans Silverlight, j'obtiens le message d'avertissement du compilateur et de l'erreur d'exécution:
Avertissement 2 Le tag "Statique" n'existe pas dans l'espace de noms XML 'http://schemas.microsoft.com/winfx/2006/xaml'...
et
Valeur d'attribut non valide {x:Statique SilverlightApplication3:Page.Test} pour le Texte de la propriété. [En Ligne: 7 Position: 25]
Je suis en supposant que ce n'est pas pris en charge dans Silverlight 2, ou suis-je en manquant de quelque chose de vraiment simple? Voici le code complet pour les deux, juste au cas où c'est celui-ci:
public partial class Window1 : Window
{
public static readonly string Test = "test";
public Window1()
{
InitializeComponent();
}
}
<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
xmlns:WpfApplication4="clr-namespace:WpfApplication4">
<Grid>
<TextBlock Text="{x:Static WpfApplication4:Window1.Test}" />
</Grid>
</Window>
et voici la version SL:
public partial class Page : UserControl
{
public static readonly string Test = "test";
public Page()
{
InitializeComponent();
}
}
<UserControl x:Class="SilverlightApplication3.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:SilverlightApplication3="clr-namespace:SilverlightApplication3"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock Text="{x:Static SilverlightApplication3:Page.Test}" />
</Grid>
</UserControl>
OriginalL'auteur Rich | 2009-03-12
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il ressemble à Silverlight n'est pas en charge la liaison de propriétés statiques: Qu'est-ce que {x:Statique sdfsdf} équivalent?
WhyTF ne supporte-il pas?!
OriginalL'auteur
Malheureusement Silverlight possède de nombreuses limites quant à la fonctionnalité et vous venez de trouver l'un d'eux. StaticMarkupExpression n'est pas pris en charge par SL2. Vous aussi vous ne pouvez pas le définir par vous-même.
par exemple, gars de ms: http://blogs.msdn.com/edmaia/archive/2008/11/23/animating-objects-visibility-in-silverlight.aspx
Le truc, peut-être d'utiliser un objet comme
Et puis
Utilisez la syntaxe complète. Une chaîne n'est pas une Couleur de l'objet, de sorte que vous ne pouvez pas attribuer à l'un. Mais si vous utilisez la totalité de l'angle du support de la syntaxe, vous pouvez spécifier une couleur et il fonctionne parfaitement. Ou, utilisez un générateur comme Mélange et avoir un regard sur la façon dont il marque les propriétés qui contiennent des objets de Couleur dans la syntaxe abrégée.
public static string Value {get{return Page.Test;}}
fonctionne aussiOriginalL'auteur
Vous pouvez réellement se lier à des propriétés statiques aussi longtemps que la classe n'est pas une classe statique. Donc, en utilisant l'exemple précédent de la classe Helper:
Le XAML restera le même.
Page.Test
a été mis à jour?Hmmm, je ne peux pas le faire fonctionner. Ce que la syntaxe xaml, vous pouvez l'ajouter ici
OriginalL'auteur
J'ai juste remarqué que tu avais une question secondaire sur la liaison à une couleur. Je ne pense pas que cela peut être fait en Silverlight. Je suis sûr que l'exigence minimale pour un objectif contraignant en Silverlight est FrameworkElement.
OriginalL'auteur
Un objet statique sera instancié qu'une seule fois et persistent jusqu'à la fin du programme.Un objet statique peut conserver son état, même quand il n'est pas dans le champ d'application, mais uniquement visibles au sein de leur champ d'application.
OriginalL'auteur