WPF按钮显示时Content为空,但点击可捕获代码的绑定问题
问题分析与解决方案
嘿,我来帮你搞定这个WPF绑定问题!
首先咱们理清楚现状:你点击按钮能拿到对应的原因码,但按钮文本为空——这说明按钮的DataContext已经正确绑定到了集合里的单个string项(不然CommandParameter传值也不会成功),问题就出在TextBlock的Text绑定上!
核心问题
你的按钮应该是在ItemsControl(或者ListBox、WrapPanel这类带ItemsSource的容器)里批量生成的,每个按钮的DataContext就是Names集合里的一个string元素。而你现在TextBlock的Text绑定写的是{Binding ?????},这显然不对——因为这个DataContext本身就是字符串值,没有属性名,直接绑定{Binding}就可以了!
修正后的XAML代码
把TextBlock的绑定改成这样:
<TextBlock x:Name="Reason" Grid.Row="0" Text="{Binding}" TextWrapping="Wrap" />
额外确认点
还要确保承载这些按钮的容器(比如ItemsControl)的ItemsSource正确绑定到了ViewModel的Names属性,比如:
<ItemsControl ItemsSource="{Binding Names}"> <ItemsControl.ItemTemplate> <!-- 你的按钮模板放在这里 --> </ItemsControl.ItemTemplate> </ItemsControl>
这样修改后,按钮上就会正确显示每个原因码的文本,同时点击时依然能正常传递对应的字符串到命令里。
内容的提问来源于stack exchange,提问作者Richard Lu
相关产品推荐
相关产品推荐

