Silverlight 2 - проблема DataContext / Binding - PullRequest
1 голос
/ 02 марта 2009

У меня проблема с этим XAML ... Когда я его запускаю, он зависает из-за TextBox. (Под «зависаниями» я подразумеваю, что страница aspx хостинга отображается в браузере, но объект usercontrol не появится на странице, и в нижней части окна Internet Explorer есть несколько маленьких зеленых полос, которые заполняются, но никогда не исчезают .) У меня есть и TextBox, и TextBlock в моем коде только для тестирования. Он работает нормально, если я закомментирую TextBox и оставлю только TextBlock, поэтому я знаю, что DataContext устанавливается и привязка к PatternName работает. Там нет ошибок в окне вывода, чтобы помочь мне отладить. Пожалуйста помоги! Я потратил часы на эту проблему. Что может быть возможным?

    <StackPanel x:Name="HolePatternStackPanel" >
            <TextBlock Text="{Binding PatternName}" Width="75" />
            <TextBox Text="{Binding PatternName}" Height="25" Width="125"/>
     </StackPanel>

Вот код, который устанавливает DataContext из вызывающего метода ListBox.SelectionChanged:

private void lvHolePatterns_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    HolePatternStackPanel.DataContext = this.ActivePattern;
}

Ответы [ 2 ]

0 голосов
/ 24 марта 2009

Вам не нужно будет использовать событие SelectionChanged, если вы установите DataContext для элементов управления с помощью SelectedItem

например

<Grid DataContext="{Binding SelectedItem}">
  <TextBlock Text="{Binding some_field_in_selecteditem}" />
</Grid>
0 голосов
/ 02 марта 2009

Что ж, я узнал больше об этом ... Все это - дизайн интерфейса Master-Detail, и поэтому у меня был ListBox, использующий SelectedItem = "{Binding ActivePattern}", и, очевидно, какой-то бесконечный цикл получал установить между этим и обработчиком событий SelectionChanged.

Так что теперь мой вопрос теперь в чем польза SelectedItem? Так как мне пришлось добавить обработчик событий SelectionChanged, чтобы обновить DataContext панели стека сведений?

...