2017-10-17 7 views
0

J'essaie de contrôler la visibilité d'un DataGridTextColumn en utilisant deux valeurs booléennes. Une des valeurs est définie par une zone de liste déroulante et je suis capable de voir dans le débogueur que les valeurs booléennes sont correctement gérées par booleanAllTrueConverter.WPF Datagrid Colonne La visibilité ne fonctionne pas avec MultiBinding

Mon problème est que la valeur du convertisseur retourné n'a aucun effet sur la visibilité de la colonne. La colonne est toujours visible même lorsque FALSE est retourné par le convertisseur.

J'apprécierais certainement toutes les idées qui sont offertes.

Merci.

<DataGrid 
    Name="myDataGrid" 
    ItemsSource="{Binding Source={StaticResource ZZZZ}}" 
    AutoGenerateColumns="False" 
    IsReadOnly="True" 
    KeyboardNavigation.TabNavigation="None" 
    > 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding SomeItems}" > 
      <DataGridTextColumn.Visibility> 
       <MultiBinding Converter="{StaticResource booleanAllTrueConverter}"> 
        <Binding 
         Source="{StaticResource ProxyElement}" 
         Path="DataContext.IsBlahVisible" 
         Mode="TwoWay" 
         UpdateSourceTrigger="PropertyChanged" 
         /> 
        <Binding 
         Source="{StaticResource ProxyElement}" 
         Path="DataContext.AreColumnsVisible" 
         Mode="TwoWay" 
         UpdateSourceTrigger="PropertyChanged" 
         /> 
       </MultiBinding> 
      </DataGridTextColumn.Visibility> 
      <DataGridTextColumn.HeaderTemplate> 
       <DataTemplate> 
        <Grid HorizontalAlignment="Stretch"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="40"/> 
         </Grid.ColumnDefinitions> 
         <local:ComboBox 
          Grid.Column="0" 
          Width="22" 
          Height="36" 
          HorizontalAlignment="Right" 
          VerticalAlignment="Center" 
          ItemsSource="{Binding DataContext.SomeItems, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" 
          SelectedItems="{Binding DataContext.SelectedSomeItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" 
          ></local:ComboBox> 
         <TextBlock 
          Text="SomeItems" 
          Grid.Column="1" 
          HorizontalAlignment="Left" 
          VerticalAlignment="Center" 
          Grid.ColumnSpan="2" 
          Height="16" 
          Margin="0,3" 
          Width="37" 
          /> 
        </Grid> 
       </DataTemplate> 
      </DataGridTextColumn.HeaderTemplate> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+1

La visibilité est pas booléens. C'est une énumération. –

Répondre

2

Vous devez retourner soit Visibility.Visible au lieu de true ou retourner Visibility.Collapsed au lieu de false de booleanAllTrueConverter

+0

OK. Je vais essayer ça. Merci pour la réponse rapide. J'espère pouvoir approuver votre réponse bientôt. – dev1998

+0

Bingo. J'ai créé un nouveau convertisseur qui retourne Visibility.Visible si toutes les entrées sont vraies. Merci de votre aide. – dev1998