我會盡力給予了一下這個問題 的更多細節在WPF應用程序,在「主窗口」的左側,我有一個包含一個列表框一個用戶控件,這樣WPF之間的數據綁定
<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包含一個datagrid,哪些數據將從基於標籤的xml文件中獲取,或者通過usercontrol3的viewmodel從窗口左側的列表框中選擇。 所以問題是如何將「SelectedItem」或「SelectedIndex」傳遞給Label和DataGrid的viewModel? 我知道它適用於將標籤綁定到帶有'elementName'和'SelectedItem'的路徑的列表框。現在我無法弄清楚如何處理usercontrols和'ObjectDataProvider'。我試着按照下面的建議無法解決它。到目前爲止爲usercontrol2,如果我用同樣的ObjectDataProvider如上述,我能得到這個標籤爲
<Label Name="TemplateNameLabel" Content="{Binding Source={StaticResource viewModel}, Path=TemplateNames[0]}" />
在哪裏,因爲它是從XML文件中讀取,如果類型「的XmlNodeList」的「TemplateNames」工作。但我真的想要的是像
<Label Name="TemplateNameLabel" Content="{Binding Source={StaticResource viewModel}, Path=TemplateNames[SelectedIndex]}" />
這可以做到沒有任何命令,就像綁定到'elementname'而不涉及usercontrol? 謝謝。
在ViewModel中放入SelectedItem屬性,並從第二個ViewModel引用該屬性。編寫用戶界面的不同部分通常由ViewModels之間的通信解決,而不是Views。 –
@ user2417994,你的問題仍然適用? – Sevenate