【发布时间】:2013-03-25 04:19:45
【问题描述】:
我不知道如何从子控件的资源部分中访问我的 Window.Resources。我在子控件中定义了一个 DataTemplate,并希望该 DataTemplate 绑定到我的视图模型上的 ICommand(在 Window.Resources 中定义)
编辑: 我将RadPaneGroup 代码添加到主窗口 XAML。这是我实例化ProjectsViewModel 对象的地方。 RadDocumentPane 中包含的 ProjectsView 控件是我在下面列出的子控件。
主窗口
<Window.Resources>
<viewModels:ProjectsViewModel x:Key="ProjectsViewModel" />
</Window.Resources>
<telerik:RadDocking HasDocumentHost="False" >
<telerik:RadSplitContainer>
<telerik:RadPaneGroup DataContext="{StaticResource ProjectsViewModel}">
<telerik:RadDocumentPane Header="Projects">
<views:ProjectsView/>
</telerik:RadDocumentPane>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
...
儿童控制
<Control.Resources>
<!--Data template for the Task object-->
<DataTemplate DataType="{x:Type models:Task}">
<StackPanel>
<TextBlock Text="{Binding DisplayName}" Foreground="Red"
FontSize="16" FontFamily="Verdana" />
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu >
<telerik:RadMenuItem Header="New Project"
Command="{Binding NewProjectCommand}"/>
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
</StackPanel>
</DataTemplate>
上述 XAML 上的绑定正在尝试绑定到 Task 对象。但是,我的 ICommand 位于 ViewModel (ProjectsViewModel) 中。我尝试将绑定更改为Command="{Binding NewProjectCommand, Source={StaticResource ProjectsViewModel}},但这会引发异常。
我做错了什么?
谢谢,
【问题讨论】:
-
您的 ChildControl 是
UserControl还是CustomControl? -
我的控件是 s UserControl - 基本上为我的主窗口中的一个窗格保存一个 TreeView。
-
进行了编辑以显示如何在 XAML 中实例化 ProjectsViewModel。
-
抛出什么样的异常?
标签: wpf binding staticresource