1

У меня есть DataGridTextColumn переплетены с CompositeCollection из 4 ObservableCollectionDateGridTextColumn отключить нулевые значения

Один из DataGridTextColumn, переплетены так:

<DataGrid x:Name="DonneesBrutes" IsReadOnly="True" ItemsSource="{Binding Path=.cmpc}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected"> 
      <DataGrid.Columns> 
       <DataGridTextColumn x:Name="Ligne" Width="*" Binding="{Binding Path=.Remarque}" Header="Ligne" IsReadOnly="True"></DataGridTextColumn> 

Где CMPC это мой CompositeCollection и где Ligne не должны получить нулевое значение. Проблема, я беру много нулевых значений, как на этом снимке экрана: http://www.zimagez.com/zimage/compositecollection.php Как я могу игнорировать все строки, где он имеет нулевое значение? Есть что-то вроде IsNullAble = false для DataGridTextColumn?

+0

Вы хотите, чтобы не показывать каждую строку, где 'Remarque' свойство является' null'? – nakiya

+0

Да, это то, к чему я стремился. – Kraenys

ответ

2

Вот простой пример (протестирован). Вы не увидите вторую строку из-за триггера. Я использую значения int, поэтому я сравниваю с 20 в триггере. в вашем случае, используйте x:Null. Вы можете использовать ту же технику с вашей.

XAML:

<Window x:Class="DataGridTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:dataGridTest="clr-namespace:DataGridTest" 
     Title="MainWindow" Height="350" Width="525"> 
    <DataGrid AutoGenerateColumns="True"> 
    <DataGrid.RowStyle> 
     <Style TargetType="{x:Type DataGridRow}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding X}" Value="20"> 
        <Setter Property="Visibility" Value="Collapsed"></Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.RowStyle> 

     <DataGrid.Items> 
      <dataGridTest:Test X="10" Y="5" /> 
      <dataGridTest:Test X="20" Y="10" /> 
     </DataGrid.Items> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding X}" /> 
      <DataGridTextColumn Binding="{Binding Y}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
</Window> 

код позади:

namespace DataGridTest 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 

    public class Test 
    { 
     public int X { get; set; } 
     public int Y { get; set; } 
    } 
} 
+0

Первое, что я вижу, это 'AutoGenerateColumns =" ​​True "' . Я не могу этого сделать, потому что столбцы генерируются моей привязкой из 'CompositeCollection', я не могу (я полагаю) Auto Generate'em. Более того, я действительно не понимаю, что вы сделали. Это работает только для 20 первых значений? (Извините, я совершенно новичок в разработке C#) Спасибо за вашу помощь @Nikaya – Kraenys

+1

Вам не нужно заботиться о других вещах. Просто взгляните на 'DataTrigger' для' DataGrid.RowStyle'. Измените 'DataTrigger' на нечто вроде' Binding = {{Binding Remarque} "и' Value = "{x: Null}" '. – nakiya

+0

Это прекрасно, я искал. Я взгляну на свойства RowStyle и Trigger, чтобы полностью понять, что мы можем сделать. – Kraenys