Элемент управления Silverlight в XAML имеет значение NULL во время выполнения

Я создал приложение Silverlight с элементом управления картой DeepEarth. Вот мой базовый XAML

<Grid x:Name="LayoutRoot" >
    <!-- Map Control -->
    <DeepEarth:Map x:Name="map" Margin="0,0,0,0">
        <Controls:CoordControl VerticalAlignment="Bottom" HorizontalAlignment="Right" />
        <Controls:ScaleControl VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="12,12,12,40" />
    </DeepEarth:Map>
    <Controls:NavControl x:Name="navControl" >
        <StackPanel Orientation="Horizontal">
            <Button x:Name="MyButton" Content="Hi" Click="MyButton_Click"></Button>
        </StackPanel>
    </Controls:NavControl>
</Grid>

У меня есть созданный класс поведения, который я хочу прикрепить к кнопке

public Page()
{
    InitializeComponent();
    new ButtonActionWithCancel(MyButton, new CreatePointCommand(map));
}
void MyButton_Click(object sender, RoutedEventArgs e)
{
    if (MyButton == null) throw new Exception("Wat?");
}

Это предназначено для выполнения некоторых действий с MyButton, подключения некоторых событий и прочего. Проблема в том, что MyButton во время выполнения имеет значение null. Почему? Другие элементы управления в иерархии не являются нулевыми. Что происходит?


person mcintyre321    schedule 23.02.2009    source источник
comment
все ли правильно отображается на странице?   -  person Mike_G    schedule 24.02.2009
comment
Да, кнопка видна, и нажатие на нее, кажется, работает.   -  person mcintyre321    schedule 24.02.2009
comment
Разве отправитель в MyButton_Click не будет кнопкой? Итак, вы можете просто сделать Button myLocalButton = (Button)sender, а затем сделать то, что вам нужно?   -  person mattmanser    schedule 24.02.2009
comment
Это не совсем то, что мне нужно. Долгосрочная цель состоит в том, чтобы иметь внутри StackPanel, и я буду динамически добавлять в него кнопки для команд в зависимости от текущего состояния приложения. Для этого мне нужно иметь ненулевую ссылку на элемент управления.   -  person mcintyre321    schedule 25.02.2009
comment
Не могли бы вы сформулировать свой вопрос в форме Jeopardy в соответствии с часто задаваемыми вопросами? Это помогло бы нам дать более четкий ответ людям.   -  person Jeff Wilcox    schedule 11.08.2009
comment
На самом деле это прекратилось. Возможно, это связано с бета-версией...   -  person mcintyre321    schedule 11.08.2009


Ответы (1)


Это перестало происходить, когда я вышел из бета-версии

person mcintyre321    schedule 05.02.2010
comment
В то время Silverlight vWhateverIWasWorkingOn находился в стадии бета-тестирования. - person mcintyre321; 28.09.2011
comment
Аааа ок!! Я думал, вы имели в виду, что вы вышли из бета-версии ВАШЕГО приложения ;-). Спасибо!! - person zapico; 28.09.2011