WPF DataTemplate内Pruefwert绑定值无法显示问题求助
问题分析与解决
你的问题核心在于ContentControl的Content属性未设置,导致TextBoxTemplate的绑定上下文异常:
DataGridTextColumn的绑定直接作用于行的DataContext(即你的数据实体),所以能正常读取Pruefwert;- 而
ContentControl应用ContentTemplate时,模板内元素的默认绑定上下文是ContentControl.Content属性的值,你未给该属性赋值,绑定自然找不到Pruefwert。
解决方案(两种可选)
方案1:给ContentControl设置Content绑定(推荐)
修改Actions列的ContentControl部分,添加Content="{Binding}",让模板继承行的DataContext:
<ContentControl Content="{Binding}"> <ContentControl.Style> <Style TargetType="ContentControl"> <Style.Triggers> <DataTrigger Binding="{Binding Type}" Value="button"> <Setter Property="ContentTemplate" Value="{StaticResource ButtonTemplate}" /> </DataTrigger> <DataTrigger Binding="{Binding Type}" Value="text"> <Setter Property="ContentTemplate" Value="{StaticResource TextBoxTemplate}" /> </DataTrigger> </Style.Triggers> </Style> </ContentControl.Style> </ContentControl>
方案2:在模板内使用RelativeSource绑定
如果不想修改ContentControl,也可以直接在TextBoxTemplate的TextBox绑定中指定绑定源为ContentControl的DataContext:
<TextBox Text="{Binding DataContext.Pruefwert, RelativeSource={RelativeSource AncestorType=ContentControl}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Background="White" HorizontalAlignment="Stretch" Grid.Column="0" Grid.ColumnSpan="2" TextChanged="TextBox_TextChanged"/>
验证说明
两种方案都能让TextBox正确读取Pruefwert的值,方案1更简洁,符合WPF绑定的常规逻辑,建议优先使用。
内容的提问来源于stack exchange,提问作者user25434284
相关产品推荐
相关产品推荐

