Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM行为滚动视图加载错误_C#_Wpf_Mvvm - Fatal编程技术网

C# MVVM行为滚动视图加载错误

C# MVVM行为滚动视图加载错误,c#,wpf,mvvm,C#,Wpf,Mvvm,在我的项目中,当ScrollView位于数据网格的底部时,我需要检测一个行为 只有当数据从视图加载并直接需要滚动视图时,his才能很好地工作 有时我的数据可以在第二次加载,但它不会 我的行为 public class ScrollViewerMonitor { public static DependencyProperty AtEndCommandProperty = DependencyProperty.RegisterAttached( "A

在我的项目中,当ScrollView位于数据网格的底部时,我需要检测一个行为

只有当数据从视图加载并直接需要滚动视图时,his才能很好地工作

有时我的数据可以在第二次加载,但它不会

我的行为

public class ScrollViewerMonitor
{
    public static DependencyProperty AtEndCommandProperty
        = DependencyProperty.RegisterAttached(
            "AtEndCommand", typeof(ICommand),
            typeof(ScrollViewerMonitor),
            new PropertyMetadata(OnAtEndCommandChanged));

    public static ICommand GetAtEndCommand(DependencyObject obj)
    {
        return (ICommand)obj.GetValue(AtEndCommandProperty);
    }

    public static void SetAtEndCommand(DependencyObject obj, ICommand value)
    {
        obj.SetValue(AtEndCommandProperty, value);
    }


    public static void OnAtEndCommandChanged(
        DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        FrameworkElement element = (FrameworkElement)d;
        if (element != null)
        {
            element.Loaded -= element_Loaded;
            element.Loaded += element_Loaded;
        }
    }

    static void element_Loaded(object sender, RoutedEventArgs e)
    {
        FrameworkElement element = (FrameworkElement)sender;
        element.Loaded -= element_Loaded;
        ScrollViewer scrollViewer = FindChildOfType<ScrollViewer>(element);
        if (scrollViewer == null)
        {
            return;
        }

        var dpd = DependencyPropertyDescriptor.FromProperty(ScrollViewer.VerticalOffsetProperty, typeof(ScrollViewer));
        dpd.AddValueChanged(scrollViewer, delegate (object o, EventArgs args)
        {
            bool atBottom = scrollViewer.VerticalOffset
                           >= scrollViewer.ScrollableHeight;
            if (atBottom)
            {
                var atEnd = GetAtEndCommand(element);
                if (atEnd != null)
                {
                    atEnd.Execute(null);
                }
            }
        });
    }

    static T FindChildOfType<T>(DependencyObject root) where T : class
    {
        var queue = new Queue<DependencyObject>();
        queue.Enqueue(root);

        while (queue.Count > 0)
        {
            DependencyObject current = queue.Dequeue();
            for (int i = VisualTreeHelper.GetChildrenCount(current) - 1; 0 <= i; i--)
            {
                var child = VisualTreeHelper.GetChild(current, i);
                var typedChild = child as T;
                if (typedChild != null)
                {
                    return typedChild;
                }
                queue.Enqueue(child);
            }
        }
        return null;
    }
}
公共类ScrollViewerMonitor
{
公共静态从属属性AtEndCommandProperty
=DependencyProperty.RegisterAttached(
“ATEND命令”,类型为(ICommand),
类型(ScrollViewerMonitor),
新属性元数据(OnatedCommandChanged));
公共静态ICommand GetAtEndCommand(DependencyObject obj)
{
返回(ICommand)对象GetValue(AtEndCommandProperty);
}
公共静态void SetAtEndCommand(DependencyObject对象、ICommand值)
{
对象设置值(AtEndCommandProperty,值);
}
公共静态无效命令已更改(
DependencyObject d,DependencyPropertyChangedEventArgs e)
{
FrameworkElement=(FrameworkElement)d;
if(元素!=null)
{
element.Loaded-=element\u Loaded;
element.Loaded+=element_Loaded;
}
}
已加载静态无效元素(对象发送器,路由目标e)
{
FrameworkElement=(FrameworkElement)发送方;
element.Loaded-=element\u Loaded;
ScrollViewer ScrollViewer=FindChildOfType(元素);
如果(scrollViewer==null)
{
返回;
}
var dpd=DependencyPropertyDescriptor.FromProperty(ScrollViewer.VerticalOffsetProperty,typeof(ScrollViewer));
AddValueChanged(scrollViewer,委托(对象o,事件args args)
{
bool atBottom=scrollViewer.VerticalOffset
>=scrollViewer.ScrollableHeight;
如果(在底部)
{
var-atEnd=GetAtEndCommand(元素);
如果(atEnd!=null)
{
atEnd.Execute(null);
}
}
});
}
静态T FindChildOfType(DependencyObject根),其中T:class
{
var queue=新队列();
queue.Enqueue(root);
而(queue.Count>0)
{
DependencyObject当前=queue.Dequeue();

for(int i=VisualTreeHelper.GetChildrenCount(当前)-1;0奇怪的是,在加载事件中,您应该始终能够访问scrollviewer,即使它是隐藏的。您显示的代码似乎按照预期工作。请注意,命令绑定中不需要
,UpdateSourceTrigger=PropertyChanged
…它是否在其他地方丢失了?恐怕您应该共享更多的xaml,也许还需要e LoadCommand,这样我们就可以重现问题了。问题出在FindChildOfType中。在这期间,它找不到scrollView。执行只在视图加载上进行。这就是为什么我问你是否可以发布更多的xaml。我尝试了一个简单的datagrid,它可以工作。我不确定如何重现你的GUI如何编译你的DataGridTemplate,Sorry我刚刚测试了一个没有样式和usercontrol的简单datagrid,这是一样的,我发布了一个工作的datagrid和一个不工作的datagrid
<D:DataGridTemplate  x:Name="Datagrid" Behavior:ScrollViewerMonitor.AtEndCommand="{Binding LoadCommand,UpdateSourceTrigger=PropertyChanged}">
            <D:DataGridTemplate  x:Name="Datagrid" Behavior:ScrollViewerMonitor.AtEndCommand="{Binding LoadCommand}" SelectedValue="{Binding SelectedID}" SelectedValuePath="Swmo_id" Grid.Column="0"  Grid.Row="1" Grid.RowSpan="1"  ItemsSource= "{Binding TypeMouvement, Converter={StaticResource TypeCollectionConverter},Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Grid.ColumnSpan="2" >
            <!--"{Binding TypeMouvement, Converter={StaticResource TypeCollectionConverter}}"TypeMouvement-->
            <DataGrid.Resources>
                <Helper:BindingProxy x:Key="proxy" Data="{Binding}" />
            </DataGrid.Resources>
            <DataGrid.Columns>
                <D:DataGridFirstColumn Visibility="{Binding Data.TypeMouvement, Converter={StaticResource FirstColumnConverter}, Source={StaticResource proxy}}"/>
                <!--Mofi_Id-->
                <DataGridTextColumn Header="N° Chrono" Width="Auto"  Binding="{Binding Path=Mofi_Id, Converter={StaticResource GestionMouvementConverter}, ConverterParameter=Mofi_Id}">
                    <DataGridTextColumn.Visibility>
                        <MultiBinding  Converter="{StaticResource  ColumnTypeConverter}" Mode="TwoWay">
                            <MultiBinding.Bindings>
                                <Binding  Path="Data.DataChampFinal[0].Cham_Order" Source="{StaticResource proxy}" />
                                <Binding  Path="Data.TypeMouvement" Source="{StaticResource proxy}" />
                            </MultiBinding.Bindings>
                        </MultiBinding>
                    </DataGridTextColumn.Visibility>
                </DataGridTextColumn>
                <!--id-->

                <DataGridTextColumn Header="ID"   Binding="{Binding Path=Swmo_id}" 
                                    Visibility="{Binding Data.DataChampFinal[1].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />

                <!--Visibility="{Binding Data.Swmo_id, Converter={StaticResource VisibleColumnConverter}, ConverterParameter=1, Source={StaticResource proxy} "{Binding coucou, Converter={StaticResource DisplayIndexOrder}, ConverterParameter=0}" DisplayIndex="{Binding Int10, Mode = TwoWay, FallbackValue = 1}" Visibility="{Binding Data.TypeMouvement, Converter={StaticResource ColumnTypeConverter}, Source={StaticResource proxy}}"  />  -->
                <DataGridTextColumn Header="Date de validation"  Binding="{Binding Path=Mofi_Datefinal, Converter={StaticResource GestionMouvementConverter}, ConverterParameter=Mofi_Datefinal}">
                    <DataGridTextColumn.Visibility>
                        <MultiBinding  Converter="{StaticResource  ColumnTypeConverter}" Mode="TwoWay">
                            <MultiBinding.Bindings>
                                <Binding  Path="Data.DataChampFinal[2].Cham_Order" Source="{StaticResource proxy}" />
                                <Binding  Path="Data.TypeMouvement" Source="{StaticResource proxy}" />
                            </MultiBinding.Bindings>
                        </MultiBinding>
                    </DataGridTextColumn.Visibility>
                </DataGridTextColumn>

              <DataGridTextColumn Header="Date du mouvement" Binding="{Binding Path=Mobr_Datemouv, Converter={StaticResource GestionMouvementConverter}, ConverterParameter=ConvertDateFR }"
                                    Visibility="{Binding Data.DataChampFinal[3].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Date d'Entrée CM." Binding="{Binding Path=Mobr_Dateentreecm, Converter={StaticResource GestionMouvementConverter}, ConverterParameter=ConvertDateFR }"
                                    Visibility="{Binding Data.DataChampFinal[4].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Entrepôt Fiscal"   Binding="{Binding Path=Mobr_Identrepotfiscal}" 
                                    Visibility="{Binding Data.DataChampFinal[5].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" /> 
                <DataGridTextColumn Header="Entrepôt Compte"   Binding="{Binding Path=Mobr_Identrcpt}" 
                                    Visibility="{Binding Data.DataChampFinal[6].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Compte"  Binding="{Binding Path=Comp_Id}"  
                                    Visibility="{Binding Data.DataChampFinal[7].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Couleur" Binding="{Binding Path=Comp_Idcouleur}" 
                                    Visibility="{Binding Data.DataChampFinal[8].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Sous Compte"    Binding="{Binding Path=Mobr_Idsouscompte}"  
                                    Visibility="{Binding Data.DataChampFinal[9].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Type mouvement" Binding="{Binding Path=Mobr_Mouvement}" 
                                    Visibility="{Binding Data.DataChampFinal[10].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Type justificatif si ecrit auto." Width="Auto"  Binding="{Binding Path=Mobr_Idtypeecrit}" 
                                    Visibility="{Binding Data.DataChampFinal[11].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Code Produit"   Binding="{Binding Path=Prod_Id}" 
                                    Visibility="{Binding Data.DataChampFinal[12].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Degré"  Binding="{Binding Path=Mobr_Degré}" 
                                    Visibility="{Binding Data.DataChampFinal[13].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Code Mouvement"   Binding="{Binding Path=Como_Id}" 
                                    Visibility="{Binding Data.DataChampFinal[14].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Entrée/sortie"   Binding="{Binding Path=Mobr_TypeMvt}"  
                                    Visibility="{Binding Data.DataChampFinal[15].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Sens"   Binding="{Binding Path=Mobr_Sens}"  
                                    Visibility="{Binding Data.DataChampFinal[16].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Type de Tiers du Mvt."     Binding="{Binding Path=Mobr_Idtierstyp}" 
                                    Visibility="{Binding Data.DataChampFinal[17].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Code du Tiers" Binding="{Binding Path=Mobr_Codetiers}"  
                                    Visibility="{Binding Data.DataChampFinal[18].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Désignation du Tiers"      Binding="{Binding Path=Mobr_Nomtiers}" 
                                    Visibility="{Binding Data.DataChampFinal[19].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Type de Pièce Gestion"     Binding="{Binding Path=Mobr_Idpiecegest}" 
                                    Visibility="{Binding Data.DataChampFinal[20].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Référence Pièce Origine1"  Binding="{Binding Path=Mobr_Refpiece1}"  
                                    Visibility="{Binding Data.DataChampFinal[21].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                ...
                <DataGridTextColumn Header="CRA" Binding="{Binding Path=Mobr_Cra}"  
                                    Visibility="{Binding Data.DataChampFinal[26].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Type Nature Expédition"    Binding="{Binding Path=Mobr_Idexptype}"  
                                    Visibility="{Binding Data.DataChampFinal[27].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Qte. régie en L."          Binding="{Binding Path=Mobr_Qteregielitre}" 
                                    Visibility="{Binding Data.DataChampFinal[28].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Vol. effectif en L."       Binding="{Binding Path=Mobr_Effectiflitre}"  
                                    Visibility="{Binding Data.DataChampFinal[29].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Qte. Gest. Commerciale en U." Binding="{Binding Path=Mobr_Qtegestcom}"  
                                    Visibility="{Binding Data.DataChampFinal[30].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Libre5"  Binding="{Binding Path=Mobr_Libre5}"    
                                    Visibility="{Binding Data.DataChampFinal[40].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />
                <DataGridTextColumn Header="Libre6"  Binding="{Binding Path=Mobr_Libre6}"    
                                    Visibility="{Binding Data.DataChampFinal[41].Cham_Order, Mode=TwoWay, Converter={StaticResource VisibleColumnConverter}, Source={StaticResource proxy}}" />

            </DataGrid.Columns>
            <DataGrid.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Historique..." Command="{Binding GoSeeHistory}" />
                </ContextMenu>
            </DataGrid.ContextMenu>
        </D:DataGridTemplate>
       <D:DataGridTemplate  x:Name="Datagrid" 
                         Behavior:ScrollViewerMonitor.AtEndCommand="{Binding LoadCommand}"  
                         TablePaged:SortColumn.AtSortingColumnCommand="{Binding SortingColumnCommand}" 
                         Grid.Column="0"  Grid.Row="1" Grid.RowSpan="2"  ItemsSource="{Binding DataProduits,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
        <DataGrid.Resources>
            <Helper:BindingProxy x:Key="proxy" Data="{Binding}" />
            <CollectionViewSource x:Key="Currentcollection" Source="{Binding Path= ColumnName}" />

        </DataGrid.Resources>

        <DataGrid.Columns>
            <DataGridTextColumn Header="ID" Binding="{Binding Path=Prod_Id}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Id" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>

            <DataGridTextColumn Header="Désignation" Binding="{Binding Path=Prod_Des}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Des" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Désignation court" Binding="{Binding Path=Prod_Lib}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Lib" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Millésime" Binding="{Binding Path=Prod_Millesime}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Millesime" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Type" Binding="{Binding Path=Prod_Type}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Type" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Centilisation" Binding="{Binding Path=Prod_centilisation}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_centilisation" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Appellation" Binding="{Binding Path=Prod_IdAppel}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_IdAppel" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Produit de base" Binding="{Binding Path=Prod_Idpdb}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Idpdb" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Couleur" Binding="{Binding Path=Prod_Idcouleur}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Idcouleur" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Ref. Douane" Binding="{Binding Path=Prod_Idrefdouane}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Idrefdouane" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Catégorie" Binding="{Binding Path=Prod_Idcategorie}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Idcategorie" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Regie" Binding="{Binding Path=Prod_Idprodregie}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Idprodregie" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Statut regie" Binding="{Binding Path=Prod_Idsteap}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Idsteap" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                    </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Ste. d'appartenance" Binding="{Binding Path=Prod_Cloture}">
                <DataGridTextColumn.Visibility>
                    <Binding Path="Data.ColumnName" ConverterParameter="Prod_Cloture" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" Source="{StaticResource proxy}" >
                        <Binding.Converter>
                            <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"  />
                        </Binding.Converter>
                 </Binding>
                </DataGridTextColumn.Visibility>
            </DataGridTextColumn>


        </DataGrid.Columns>


    </D:DataGridTemplate>