2013-05-31 46 views
0

Help !!!我有一个网格绑定到一个可观察的集合。我需要有一个行出现的第一个项目,当且仅当有集合中的项目:将标题列添加到Silverlight Grid

 <Grid x:Name="Broadcast" Opacity="0.85" MouseEnter="Broadcast_MouseEnter" Grid.Row="2" Margin="0,0,0,0" Width="Auto" HorizontalAlignment="Right" RenderTransformOrigin="0,0"> 
     <Grid.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform/> 
       <SkewTransform/> 
       <RotateTransform/> 
       <TranslateTransform X="0" Y="0"/> 
      </TransformGroup> 
     </Grid.RenderTransform> 
     <Border 
      x:Name="broadcastBorder" 
      Opacity="0" 
      VerticalAlignment="Center" 
      HorizontalAlignment="Center" 
      BorderThickness="3" 
      BorderBrush="Black" 
      Background="White" 
      CornerRadius="5" 
      RenderTransformOrigin="0.5,0.5"> 
      <Border.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform ScaleX="0" ScaleY="0"/> 
        <SkewTransform/> 
        <RotateTransform/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </Border.RenderTransform> 
      <ListBox Height="100" ItemsSource="{Binding}" x:Name="icAlerts" Grid.Row="1" > 
       <!--<TextBlock Text="Clear All" /> 
         <Button Tag="" Content="X" Click="DeleteBroadcast_Click" />--> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Background="Red" x:Name="spAlerts" Margin="10" Orientation="Vertical" /> 
        </ItemsPanelTemplate> 
       </ListBox.ItemsPanel> 
       <ListBox.Template> 
        <ControlTemplate TargetType="ListBox"> 
         <Border> 
          <ScrollViewer> 
           <ItemsPresenter/> 
          </ScrollViewer> 
         </Border> 
        </ControlTemplate> 
       </ListBox.Template> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Grid> 

          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="4*"></ColumnDefinition> 
           <ColumnDefinition Width="*"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 
          <Rectangle Grid.ColumnSpan="2" Stroke="LightGray" StrokeThickness="2" 
             RadiusX="15" RadiusY="15" Margin="15" 
             Height="Auto" Width="Auto"> 
          </Rectangle> 

          <TextBlock Grid.Column="0" Text="{Binding}" /> 
          <Button Grid.Column="1" Tag="{Binding}" Content="X" Click="DeleteBroadcast_Click"></Button> 
         </Grid> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </Border> 
    </Grid> 

BroadcastMessages = new ObservableCollection<string>(); 
BroadcastMessages.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(BroadcastMessages_CollectionChanged); 
      icAlerts.ItemsSource = BroadcastMessages; 

我怎样才能让第一行出现像“头”行?

回答

0

所以我刚刚结束了委托调用之前修改ObservableList。原来我们正在逃离Silverlight。 。 。

0

你确定你只是不想使用标题行吗?你无法用它做很多事情。波纹管我添加了对网格的过滤,包括文本框,组合框和日期选择器。

如果你仍然希望它在一个数据行中,那么你可以带回你的数据,如果有任何数据添加另一行,但其中一个“类型”属性或东西是不同的。然后你的绑定转换器会根据这个“type”属性改变外观。您将绑定到已排序的集合,以便首先添加行。

DataGrid filtering

+0

一个标题行对我来说可以正常工作,我需要它是可操作的,因为我需要一个“全部清除”按钮。作为一个总的Silverlight n00b,我如何修改上面的代码。我的谷歌搜索表明,我可能需要完全重写数据的显示(因为ObservableList在多个不同的列表中使用),我真的不想这样做 – andrewWinn