2011-08-23 101 views
1
   <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后面的代码绑定在一起...这里缺少什么?如何在Datagrid中显示“找不到任何项目”

+1

标题与标签不一样。 – BoltClock

回答

1

检查输出窗口。 WPF转储输出窗口发生绑定错误/异常。在那里你有机会验证它是否绑定到正确的来源,如果路径是正确的等。

你也可以尝试在绑定表达式中添加虚拟转换器。转换器为您提供调试绑定表达式的机会

+0

我试过,但没有改变....我应该使用任何可观察的集合? – Karteek

+0

您必须使用Observable集合将数据绑定到网格。你应该在网格物品计数上写入触发器。如果此计数为零或为空,则应将“NoItemFound”模板应用于网格。 – Ujjwal

5

如果您只是想在数据网格中显示一条消息(当没有项目时) - 您可以使用样式进行此操作。把这种风格放到你的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> 
+0

你的代码看起来很完美...但它不适合我..我猜是因为我绑定了代码后面的数据网格,而没有在XAML中设置Itemssource属性od datagrid ...喜欢 – Karteek

+0

DtGrid.SetBinding(ItemsControl.ItemsSourceProperty ,绑定) – Karteek

+0

我可以知道如何通知textblock显示基于绑定的代码后面的消息吗? – Karteek

相关问题