2016-06-15 3 views
0

После нескольких попыток я не могу передать свою коллекцию (CollectionViewSource) из моего представления в мой конвертер. (VisibilityColumn)Передать коллекции из представления (WPF) в мой конвертер

Xaml (WPF): Здесь моя коллекция расположена в исходном datagrid. к сожалению, я не могу восстановить этот источник для использования в моем конвертере. В этой проблеме имеется маркировка.

<D:DataGridRecherche/> 
    <D:DataGridTemplate x:Name="Datagrid" Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" ItemsSource="{Binding DataProduits,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> 
     <DataGrid.Resources> 
      <CollectionViewSource x:Key="Currentcollection" Source="{Binding Path=ColumnName}" /> 
     </DataGrid.Resources> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="ID" Binding="{Binding Path=Prod_Id}"/> 
      <DataGridTextColumn Header="Désignation" Binding="{Binding Path=Prod_Des}"/> 
      <DataGridTextColumn Header="Statut regie" Binding="{Binding Path=Prod_Idsteap}"/> 
      <DataGridTextColumn Header="Ste. d'appartenance"> 
       <DataGridTextColumn.Visibility> 
        <Binding Path="Prod_Cloture" Converter="{StaticResource VisibilityColumn}" ConverterParameter="Prod_Cloture" Mode="TwoWay" > 
         <Binding> <!-- the problem seems to be here --> 
          <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"/> 
         </Binding> 
        </Binding> 
        </DataGridTextColumn.Visibility> 
      </DataGridTextColumn> 
     </DataGrid.Columns> 
    </D:DataGridTemplate> 

Конвертер: CollectionViewSource (CurrentCollection) должен быть связан с моим представлением.

class VisibilityColumn : IValueConverter 
{ 
    public CollectionViewSource CurrentCollection { get; set; } 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 

     List<string> castedCollection = (List<string>)CurrentCollection.Source; 

     bool result=castedCollection.Exists(x => x == (string)parameter); 

     if (result == true) 
      return Visibility.Visible; 
     else 
      return Visibility.Collapsed; 

    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new Exception("The method or operation is not implemented."); 
    } 
} 
+0

Вложенные теги '' не имеют смысла. – Clemens

ответ

0

Благодарим за внимание, но конвертер не всегда запускается. Я думаю, что правильно применил ваш код.

<DataGridTextColumn Header="Ste. d'appartenance" Binding="{Binding Path=Prod_Cloture}"> 
       <DataGridTextColumn.Visibility> 
       <Binding Path="Prod_Cloture" ConverterParameter="Prod_Cloture" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"> 
        <Binding.Converter> 
         <Converters:VisibilityColumn CurrentCollection="{StaticResource Currentcollection}"/> 
        </Binding.Converter> 
       </Binding> 
       </DataGridTextColumn.Visibility> 
      </DataGridTextColumn>