2016-06-15 3 views
0

いくつか試行した後で、自分のコレクション(CollectionViewSource)をマイビューからコンバーターに渡すことができません。 (VisibilityColumn)コレクションからビュー(WPF)をコンバーターに渡します。

Xaml(WPF):ここでは、マイコレクションはソースデータグリッドに配置されています。残念ながら、私は私のコンバータで使用するためにこのソースを回復することはできません。この問題ではマーキングが利用可能です。

<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> 
関連する問題