1

我对这个 XAML 有疑问......当我运行它时,它因为 TextBox 而挂起。(“挂起”是指托管 aspx 页面显示在浏览器中,但用户控件对象不会出现在页面上,并且 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;
}
4

2 回答 2

0

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

例如

<Grid DataContext="{Binding SelectedItem}">
  <TextBlock Text="{Binding some_field_in_selecteditem}" />
</Grid>
于 2009-03-23T21:20:11.810 回答
0

好吧,我对此了解得更多......这整个事情都是一个主从 UI 设计,所以我有我的 ListBox 使用 SelectedItem="{Binding ActivePattern}",显然,一些无限循环正在建立之间那和 SelectionChanged 事件处理程序。

所以现在我的问题变成了 SelectedItem 到底有什么好处?由于我必须添加一个 SelectionChanged 事件处理程序来更新详细信息堆栈面板的 DataContext?

于 2009-03-02T19:21:33.847 回答