Silverlight 2 - DataContext / Binding问题

时间:2009-03-02 19:09:16

标签: binding silverlight-2.0 datacontext

我遇到了这个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>

以下是从调用ListBox.SelectionChanged方法设置DataContext的代码:

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

2 个答案:

答案 0 :(得分:0)

好吧,我已经了解了更多...这整个事情是一个Master-Detail UI设计,所以我使用SelectedItem =“{Binding ActivePattern}”得到我的ListBox,显然,一些无限循环正在变得越来越在它和SelectionChanged事件处理程序之间设置。

所以现在我的问题现在变成了SelectedItem的优点吗?因为我必须添加一个SelectionChanged事件处理程序来更新详细信息堆栈面板的DataContext?

答案 1 :(得分:0)

如果使用SelectedItem设置控件的DataContext,则不需要使用SelectionChanged事件

例如

<Grid DataContext="{Binding SelectedItem}">
  <TextBlock Text="{Binding some_field_in_selecteditem}" />
</Grid>