【发布时间】:2010-12-03 18:24:02
【问题描述】:
我正在尝试将 SelectedItem 绑定到视图。但是当视图位于 Resources 块内时,视图无法访问视图模型。 当 datacontext 重新分配给子项时,绑定适用于文本块,但不适用于 UserControl (NoteView)
我是否缺少任何绑定?
PFB 修改(整个)代码和内联 cmets。
<UserControl x:Class="Konduva.View.NoteSearchView"
<!-- other namespaces here -->
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding NoteSearch, Source={StaticResource Locator}}">
<Grid>
<ListView ItemsSource="{Binding Notes}"
SelectedItem="{Binding SelectedNote}">
<ListView.Resources>
<DataTemplate DataType="{x:Type vm:NoteViewModel}">
<DockPanel>
<TextBlock Text="{Binding Title}" />
<Popup Placement="Right"
PlacementTarget="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListViewItem}}"
IsOpen="{Binding (ListViewItem.IsSelected), RelativeSource={RelativeSource FindAncestor, AncestorType=ListViewItem}}"
DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}">
<StackPanel>
<!-- This is working --> <TextBlock Text="{Binding SelectedNote.Title}" />
<!-- This is not working --> <v:NoteView DataContext="{Binding SelectedNote}" />
</StackPanel>
</Popup>
</DockPanel>
</DataTemplate>
</ListView.Resources>
</ListView>
</Grid>
</UserControl>
笔记视图:
<Grid>
<TextBlock Text="{Binding Title}" /> // This Text is not displayed
</Grid>
【问题讨论】:
-
您是指弹出窗口中的绑定不起作用吗?
-
@pivotnig:不,NoteView 中的那个。检查我的内联 cmets。
-
两个快速的想法:你会不会碰巧覆盖用户控件中的数据上下文,它发生在我身上一次并花了一些时间来发现我的错误:) 另外,你可能已经检查过了,但是你看到了吗Visual Studio 输出窗口中的任何绑定错误?
-
嗨,亚历克斯!我没有覆盖我的数据上下文。如果我在我的 ListView 之外使用 NoteView,它会起作用。不,我也没有看到任何绑定错误。
标签: c# wpf mvvm mvvm-light