我将尝试提供有关此问题的更多详细信息在 WPF 应用程序中,在“主窗口”的左侧,我有一个包含列表框的 UserControl,如下所示
<UserControl.Resources>
<ObjectDataProvider x:Key="viewModel" ObjectType="{x:Type vm:TemplateListViewModel}"/>
</UserControl.Resources>
<StackPanel>
<ListBox Height="Auto" Name="TemplateList" ItemsSource="{Binding Source={StaticResource viewModel}, Path=TemplateNames}"
</StackPanel>
如图所示,列表框项是通过 viewModel 从 xml 文件中获取的。现在我有另一个包含标签的 usercontrol2 来回显来自“TemplateList”的选择。同样在此标签下,我还有另一个包含数据网格的 usercontrol3,该数据将基于标签从 xml 文件中获取,或者通过 usercontrol3 的视图模型从窗口左侧的列表框中进行选择。所以问题是如何将“SelectedItem”或“SelectedIndex”传递给Label和datagrid的viewModel?我知道当我将标签绑定到具有“elementName”和“SelectedItem”路径的列表框时它会起作用。现在我不知道如何处理用户控件和“ObjectDataProvider”。我按照下面的建议进行了尝试,但无法解决。到目前为止,对于 usercontrol2,
<Label Name="TemplateNameLabel" Content="{Binding Source={StaticResource viewModel}, Path=TemplateNames[0]}" />
如果是“XmlNodeList”类型的“TemplateNames”,因为它是从 xml 文件中读取的。但我真正想要的是
<Label Name="TemplateNameLabel" Content="{Binding Source={StaticResource viewModel}, Path=TemplateNames[SelectedIndex]}" />
这可以在没有任何命令的情况下完成吗,就像在不涉及用户控件的情况下绑定到“元素名”一样?谢谢。