Я не мог заставить это работать в Silverlight, поэтому я создал два тестовых проекта. Один простой проект WPF и один простой проект Silverlight, которые оба выполняют только одно: задайте в коде открытую статическую переменную только для чтения и используйте ее в совершенно голом XAML. В WPF работает безотказно. В Silverlight я получаю следующее предупреждение компилятора и ошибку времени выполнения:
Предупреждение 2 Тег 'Статический' не существует в пространстве имен XML 'http://schemas.microsoft.com/winfx/2006/xaml'...
и
Недопустимое значение атрибута {x: статическое 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>