Bir sol taraftaki gezinme panelini ve sağ taraftaki bir görüntü alanını (her ikisi de UserControls
) ortaya koyan aşağıdaki MainWindow
'u kullanıyorum.WPF: Set UserControl DataContext
Birisi, gezinme panelinin (LinksView.xaml
) DataContext
numarasının LinksViewModel.cs
ürününe nasıl atanacağını açıklayabilir. Düğmeye bir Komut (BtnCompanyClickCommand
) bağlamak ve LinksViewModel.cs
içinde BtnCompanyClickCommand
tanımlamak istiyorum.
DataContext'i ayarlamak için StackOVerflow üzerinde bulduğum çeşitli yöntemleri denedim, ancak bu çözümlerin hiçbiri işe yaramıyor gibi görünüyor (Bağıl Kaynağı, adlandırma görünümü ve adına bağlanma, vb.).
MainWindow.xaml
<StackPanel Orientation="Horizontal">
<vw:LinksView DataContext="{Binding RelativeSource={RelativeSource Self}}"/>
<ContentControl Content="{Binding CurrentUserControl}" />
</StackPanel>
LinksView.xaml
<StackPanel Orientation="Vertical">
<Button Content="Company" Width="75" Margin="3" Command="{Binding ElementName=Links,Path=BtnCompanyClickCommand}" />
</StackPanel>
FormsDictionary.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:SidekickAdmin.ViewModel"
xmlns:vw="clr-namespace:SidekickAdmin.View">
<DataTemplate DataType="{x:Type vm:CompanySummaryViewModel}">
<vw:CompanySummaryView>
<ContentControl Content="{Binding }" />
</vw:CompanySummaryView>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:LinksViewModel}">
<vw:LinksView />
</DataTemplate>
</ResourceDictionary>
DÜZENLEME Yani nihayet UserControl ilk çocuk öğe üzerinde yapılması gereken bir UserControl DataContext'i nasıl ayarlanacağı bu explanation geldi.
İşte çalışan değiştirilmiş LinksView.xaml.
<StackPanel Orientation="Vertical">
<StackPanel.DataContext>
<vm:LinksViewModel /> <!-- Bind the items in StackPanel to LinksViewModel -->
</StackPanel.DataContext>
<Button Content="Company" Width="75" Margin="3" Command="{Binding BtnCompanyClickCommand}" />
</StackPanel>
Ancak, ben hala (FormsDictionary.xaml ayarlanır) Linksview için DataTemplate DataContext içine kravat yok neden Alt öğenin DataContext'i olup UserControl ve ayarlamak zorunda Sebebini değilim LinksViewModel. Herhangi bir açıklama takdir edilecektir.
Düzenlemenize eklediğiniz DataContext parçasını kaldırırsanız hala çalışır mı? MainWindow görünümünün bu senaryoda ayarladığı veri kümesine sahip olacağınızı varsayacağım. –
Eğer LinksView'da ayarlanmış bir datacontext açıklık yoksa, WPF bir tane aramak için ağacı arar - sizin durumunuzda MainWindow'daki datacontext. –