<dg:DataGrid.Resources> <ViewModel:SmartMessenger x:Key="Noitemsfound"> </ViewModel:SmartMessenger> </dg:DataGrid.Resources> <dg:DataGrid.RowDetailsTemplate> <DataTemplate> <StackPanel>`enter code here` <TextBlock Text="{Binding Source={StaticResource Noitemsfound }, Path=pNorecords,Mode=TwoWay}" /> </StackPanel> </DataTemplate> </dg:DataGrid.RowDetailsTemplate>
在这里,我试图绑定一个textblock,当datagrid中没有项目时将显示一条消息。 我正在使用VS 2008 Express版本。 问题是我不能绑定属性Noitemsfound与类SmartMessenger后面的代码…什么在这里丢失?
如果你只想在没有项目的时候在你的数据网格中显示一条消息 – 你可以用一个样式来完成。 把这个样式放到你的App.xaml资源中,或者至少放在你的datagrid资源中。
<Style x:Key="{x:Type ItemsControl}" TargetType="{x:Type ItemsControl}"> <Style.Triggers> <DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}" Value="0"> <Setter Property="Background"> <Setter.Value> <VisualBrush Stretch="None"> <VisualBrush.Visual> <TextBlock Text="no items" FontFamily="{StaticResource FontFamily}" FontSize="{StaticResource FontSize}"/> </VisualBrush.Visual> </VisualBrush> </Setter.Value> </Setter> </DataTrigger> <DataTrigger Binding="{Binding Items, RelativeSource={RelativeSource Self}}" Value="{x:Null}"> <Setter Property="Background"> <Setter.Value> <VisualBrush Stretch="None"> <VisualBrush.Visual> <TextBlock Text="no items" FontFamily="{StaticResource FontFamily}" FontSize="{StaticResource FontSize}"/> </VisualBrush.Visual> </VisualBrush> </Setter.Value> </Setter> </DataTrigger> </Style.Triggers> </Style> <Style x:Key="{x:Type DataGrid}" TargetType="{x:Type DataGrid}" BasedOn="{StaticResource {x:Type ItemsControl}}"> </Style>
检查输出窗口。 WPF转储输出窗口发生绑定错误/异常。 在那里你有机会验证它是否绑定到正确的来源,如果路径是正确的等。
您也可以尝试在绑定表达式中添加虚拟转换器。 转换器为您提供调试绑定表达式的机会