通过使用隐式数据模板,我可以引用窗口资源中的模板,而无需使用模板中的键,如下所示:
<Window.Resources>
<DataTemplate DataType="{x:Type viewModel:FriendDetailViewModel}">
<view:FriendDetailView/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width= "200"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ContentControl Grid.Row="1" Grid.Column="1" Content="{StaticResource FriendDetailViewModel}">
</ContentControl>
</Grid>也就是说,FriendDetailViewModel中的ContentControl可以检测DataTemplate中的FriendDetailViewModel并正确地显示其内容。
但是,我试图在没有隐式数据模板的情况下这样做,但是我无法获得相同的结果。例如,如下所示:
<Window.Resources>
<DataTemplate x:Key="FriendDetailViewData">
<view:FriendDetailView DataContext="{Binding FriendDetailViewModel}"/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width= "200"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ContentControl Grid.Row="1" Grid.Column="1" Content="{Binding FriendDetailViewData}">
</ContentControl>
</Grid>ContentControl只是打印System.Windows.DataTemplate。有没有一种不使用隐式数据模板来获得等效行为的方法?
发布于 2022-09-26 13:00:47
赋值
Content="{StaticResource FriendDetailViewData}"没有任何意义。它将DataTemplate分配给Content属性。
您仍然希望使用FriendDetailViewModel实例作为内容,并明确地设置ContentTemplate:
<Window.Resources>
<DataTemplate x:Key="FriendDetailViewData">
<view:FriendDetailView/>
</DataTemplate>
</Window.Resources>
<ContentControl Content="{StaticResource FriendDetailViewModel}"
ContentTemplate="{StaticResource FriendDetailViewData}"/>https://stackoverflow.com/questions/73854354
复制相似问题