WinUI中TokenizingTextBox的TokenItem绑定ViewModel可观察属性问题
问题解决:TokenizingTextBox绑定字符串列表时Token文本不显示
问题核心
你的SelectedTokens是字符串类型的列表,每个Token的数据上下文就是单个字符串值,当前Text="{Binding ???}"未正确指向该值;同时设置的TextMemberPath="Text"无效,因为字符串不存在Text属性,这两点导致文本无法显示。
修复方案
- 修正TokenItemTemplate的文本绑定
将TokenItemTemplate里的TextBlock绑定直接指向当前数据上下文:
<TextBlock Padding="4,0,0,0" Text="{Binding}" />
- 移除无效的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
相关产品推荐
相关产品推荐

