В первые несколько часов работы с Silverlight 3 как заядлый пользователь WPF я очень разочарован многими вещами, которые он не поддерживает. Мне кажется, что это странная проблема, и она настолько общая, что я ничего не могу найти в Интернете.
У меня есть следующий XAML:
<controls:TabControl x:Name="workspacesTabControl" Grid.Row="1"
Background="AntiqueWhite" ItemsSource="{Binding Workspaces, ElementName=_root}"/>
Однако я не вижу workspacesTabControl
в коде позади. Я подумал, что, возможно, IntelliSense просто значит, и попытался все равно скомпилировать, но получил ошибку:
Error 1 The name 'workspacesTabControl' does not exist in the current context
Как получить доступ к элементам управления в коде позади?
РЕДАКТИРОВАТЬ: я понял, что вставил неправильную ошибку - у меня есть два элемента управления внутри UserControl, называемые workspacesTabControl и menuStrip. Я не могу найти ни одного из них по имени в коде позади.
На всякий случай, вот XAML для menuStrip
:
<controls:TreeView Grid.ColumnSpan="2" Height="100" x:Name="menuStrip"
ItemContainerStyle="{StaticResource MenuStripStyle}"
ItemsSource="{Binding Menu, ElementName=_root}"/>
ИЗМЕНИТЬ СНОВА:
Я не уверен, что это полезно, но я взглянул на InitializeComponent()
код и вот что я увидел:
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Windows.Application.LoadComponent(this, new System.Uri("/SapphireApplication;component/SapphireMain.xaml", System.UriKind.Relative));
}
Кажется, что он просто загружает XAML при запуске (не до или во время компиляции), поэтому имена menuStrip
и workspacesTabControl
фактически нигде не регистрируются (как они обычно находятся в формах WPF / win). Может ли этот атрибут быть проблемой? И где мне избавиться от этого требования для всех будущих пользовательских контролей, которые я делаю?