我遇到了这个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;
}
答案 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>