隐藏DataGrid边框(或其左侧)

时间:2016-09-06 13:50:06

标签: wpf datagrid

我真的不知道如何描述它。最好的事情是展示它: DataGrid with funny border problem

你看到那些细细的黑线吗? 这是Xaml片段:

<DataGrid Grid.Row="4" Grid.Column="1" ItemsSource="{Binding RunnedTests}" Margin="5"
              HeadersVisibility="None" AutoGenerateColumns="False" IsEnabled="False"
              GridLinesVisibility="None" RowBackground="#FF268AEC" BorderBrush="#FF268AEC" BorderThickness="0">            
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Width="4*" />
            <DataGridTextColumn Binding="{Binding PassedOrFailed}" Width="*">                    
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
                        <Setter Property="HorizontalAlignment" Value="Center" />
                        <Setter Property="Foreground" Value="Red" />                            
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsPassed}" Value="True">
                                <Setter Property="Foreground" Value="Green" />                                    
                            </DataTrigger>                                
                        </Style.Triggers>
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

BorderBrush&amp; BorderThickness并没有真正为它做任何事情。如果没有这些属性,它将保持不变。

这是没有RowBackground属性的同一DataGrid的图片: DataGrid without RowBackground property

更多说明:

  1. DataGrid的后台属性不执行任何操作
  2. 我不知道你是否可以从我的代码中看到,但是隐藏在那里与DataTrigger进行了令人沮丧的斗争。我希望通过DataTrigger显示单词“pass”或“failed”,具体取决于IsPassed bool属性,但无法实现。最后,我不得不妥协并在模型中创建PassedOrFailed属性。在我看来,这是非常愚蠢的,你能提出一种方法来实现它吗?
  3. 谢谢!

    更新

    我忘了提及另外两种风格:

     <Style TargetType="DataGridCell">
            <Setter Property="Foreground" Value="White" />            
            <Setter Property="FontSize" Value="15" />
            <Setter Property="Margin" Value="5" />            
        </Style>
    
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="Background" Value="Transparent" />
        </Style>
    

0 个答案:

没有答案