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

WinUI 3中无法动态绑定NavigationViewItem的x:Uid属性问题

动态绑定WinUI 3 NavigationViewItem的x:Uid属性问题

我用Template Studio for WinUI创建了Windows App应用,基于WinUI 3 NavigationView开发,打算通过SQL Server中的用户权限数据动态生成NavigationViewItem。作为XAML和MVVM新手,我已经实现了菜单名称、子菜单及图标的数据绑定,但始终无法绑定x:Uid属性,查了资料也没找到x开头属性的动态绑定方法。

XAML代码

<NavigationViewItem Content="{x:Bind Name}" MenuItemsSource="{x:Bind Children}" x:Uid="{Bind Id}" >
    <NavigationViewItem.Icon>
        <SymbolIcon Symbol="{x:Bind CategoryIcon}" />
    </NavigationViewItem.Icon>
</NavigationViewItem>

C#数据模型示例

new Category(){
    Id = "21",
    Name = "Menu item 7",
    CategoryIcon = "Home",
    Children = new ObservableCollection<Category>() {
        new Category() { Id = "211", Name  = "Menu item 8", CategoryIcon = "Home" },
        new Category() { Id = "212", Name  = "Menu item 9", CategoryIcon = "Home" }
    }
}

报错信息

NavigationViewItem动态绑定x:Uid错误提示


解决方法

直接把XAML中的x:Uid="{Bind Id}"替换为Uid="{x:Bind Id}",修改后的代码如下:

<NavigationViewItem Content="{x:Bind Name}" MenuItemsSource="{x:Bind Children}" Uid="{x:Bind Id}" >
    <NavigationViewItem.Icon>
        <SymbolIcon Symbol="{x:Bind CategoryIcon}" />
    </NavigationViewItem.Icon>
</NavigationViewItem>

原因说明

x:Uid是XAML编译阶段处理的标记指令,不支持数据绑定。而FrameworkElement类提供了对应的Uid CLR属性,这个属性可以通过{x:Bind}或{Binding}动态绑定,两者作用完全一致,都是为元素设置本地化标识键。后续如果需要做本地化,确保资源文件中存在对应Id值的键即可。

内容的提问来源于stack exchange,提问作者Cenk Yenikoylu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:12:41