Я не мог заставить это работать в Silverlight, поэтому я создал два тестовых проекта. Один простой проект WPF и один простой проект Silverlight, который делает только одно: установить публичную статическую переменную readonly в коде и использовать ее в полностью голой кости XAML. В WPF работает без сбоев. В Silverlight я получаю следующее предупреждение о компиляторе и время выполнения:
Предупреждение 2 Тег 'Static' не существует в пространстве имен XML http://schemas.microsoft.com/winfx/2006/xaml '...
и
Недопустимое значение атрибута {x: Static SilverlightApplication3: Page.Test} для свойства Text. [Линия: 7 Позиция: 25]
Я предполагаю, что это не поддерживается в Silverlight 2, или я просто пропустил что-то действительно простое? Здесь полный код для обоих на тот случай, если последний:
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>
и здесь версия 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>