No pude conseguir que esto funcione en Silverlight, así que creé dos proyectos de prueba. Un proyecto sencillo de WPF y un proyecto simple de Silverlight que solo hacen una cosa: establecer una variable de solo lectura estática pública en el código, y usarla en un XAML totalmente desnudo. En WPF, funciona sin problemas. En Silverlight, me sale el siguiente advertencia del compilador y el tiempo de ejecución de error:Uso de objetos estáticos en XAML que se crearon en código en Silverlight
Advertencia 2 La etiqueta 'estático' no existe en el espacio de nombres XML 'http://schemas.microsoft.com/winfx/2006/xaml' ...
y
de atributo no válido valor {x: Static SilverlightApplication3: Page.Test} para el texto de la propiedad. [Línea: 7 Posición: 25]
Supongo que esto no es compatible con Silverlight 2, ¿o simplemente me falta algo realmente simple? Aquí está el código completo para ambos por si acaso es esto último:
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>
y aquí está la versión 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>
Eso apesta. Gracias por el enlace. No encontré nada definitivo cuando busqué, pero el tipo que respondió en la publicación que vinculó es una autoridad en SL – Rich
WhyTF no los admite? –