You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI 3 ContentControl绑定的DataTemplateSelector未被调用如何解决

问题修复方案

核心问题:ContentControl未绑定Content属性

ContentTemplateSelector的触发依赖Content属性的取值,你仅为ContentControl设置了DataContext,没有将Content绑定到目标ViewModel实例,所以选择器不会被调用。修正XAML代码:

<Grid>
    <ContentControl 
        x:Name="content"
        Content="{x:Bind viewModel}"
        ContentTemplateSelector="{StaticResource devicesPageTemplateSelector}" 
        DataContext="{x:Bind viewModel}">
    </ContentControl>
</Grid>

其他需修正的问题

  1. 类名拼写错误
    你在选择器中强制转换时将DevicesViewModel误写为DevicesViweModel,若ViewModel类名拼写正确,选择器触发后会抛出类型转换异常,修正代码:
var viewModel = (DevicesViewModel)item;
  1. 判断逻辑反向
    你当前的无服务判断逻辑写反,!viewModel.IsNoRunningServer代表「不是没有运行中的服务」,此时返回无服务模板和预期逻辑不符,修正为:
if (viewModel.IsNoRunningServer)
{
    return NoRunningServer;
}
  1. 可选(针对UWP/WinUI平台):补充重载方法
    部分XAML框架会优先调用双参数的SelectTemplateCore重载,仅重写单参数方法可能不会触发,补充对应重载即可:
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
    return SelectTemplateCore(item);
}

内容的提问来源于stack exchange,提问作者Joe Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:54:07