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

WinUI中TokenizingTextBox的TokenItem绑定ViewModel可观察属性问题

问题解决:TokenizingTextBox绑定字符串列表时Token文本不显示

问题核心

你的SelectedTokens是字符串类型的列表,每个Token的数据上下文就是单个字符串值,当前Text="{Binding ???}"未正确指向该值;同时设置的TextMemberPath="Text"无效,因为字符串不存在Text属性,这两点导致文本无法显示。

修复方案

  1. 修正TokenItemTemplate的文本绑定
    将TokenItemTemplate里的TextBlock绑定直接指向当前数据上下文:
<TextBlock
    Padding="4,0,0,0"
    Text="{Binding}" />
  1. 移除无效的TextMemberPath配置
    由于数据源是字符串列表,而非带Text属性的对象,删除TextMemberPath="Text"这一行,避免控件错误查找不存在的属性。

修改后的完整XAML代码

<controls:TokenizingTextBox
    x:Name="TokenBox"
    MaxHeight="104"
    HorizontalAlignment="Stretch"
    ItemsSource="{x:Bind ViewModel.SelectedTokens}"
    MaximumTokens="3"
    PlaceholderText="Add Locations"
    TokenDelimiter=",">
    <controls:TokenizingTextBox.SuggestedItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <SymbolIcon Symbol="Accept" />
                <TextBlock
                    Padding="4,0,0,0"
                    Text="ttt" />
            </StackPanel>
        </DataTemplate>
    </controls:TokenizingTextBox.SuggestedItemTemplate>
    <controls:TokenizingTextBox.TokenItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <SymbolIcon Symbol="Admin" />
                <TextBlock
                    Padding="4,0,0,0"
                    Text="{Binding}" />
            </StackPanel>
        </DataTemplate>
    </controls:TokenizingTextBox.TokenItemTemplate>
    <controls:TokenizingTextBox.QueryIcon>
        <SymbolIconSource Symbol="Add" />
    </controls:TokenizingTextBox.QueryIcon>
</controls:TokenizingTextBox>

补充说明

若后续切换为自定义对象列表(例如包含Path属性的位置对象),需将TextMemberPath设置为对应属性名(如TextMemberPath="Path"),同时TokenItemTemplate的绑定改为Text="{Binding Path}"。

内容的提问来源于stack exchange,提问作者Maks V. Zaikin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:17