Est-il possible de masquer une colonne donnée en fonction d'une liaison. J'ai essayé de définir la propriété de visibilité sur DataGridTextColumn (en utilisant le convertisseur correct), mais cela ne semble pas fonctionner. Si je règle la valeur directement (pas par liaison) cela fonctionne. Est-ce que la visibilité des colonnes est une opération tout ou rien avec le DataGrid?WPF Datagrid - Définit la visibilité de la colonne par ligne
Répondre
Tout ce que vous avez à faire est d'ajouter:
puis utilisé ce qui suit dans vos colonnes:
<DataGridTextColumn CellStyle="{StaticResource vStyle}"/>
Jetez un oeil à ce poste, le problème est expliqué
Binding in a WPF data grid text column
et ici
http://blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx
Citant JaredPar du premier lien
« Essentiellement, le problème est que le DataGridTextColumn n'a pas de parent dont hériter d'une liaison car elle ne fait pas partie de l'arbre logique ou visuel.Vous devez configurer un contexte d'héritage pour avoir accès aux informations de liaison "
Solution pour obtenir ce travail ..
public class DataGridContextHelper
{
static DataGridContextHelper()
{
DependencyProperty dp = FrameworkElement.DataContextProperty.AddOwner(typeof(DataGridColumn));
FrameworkElement.DataContextProperty.OverrideMetadata(typeof(DataGrid),
new FrameworkPropertyMetadata
(null, FrameworkPropertyMetadataOptions.Inherits,
new PropertyChangedCallback(OnDataContextChanged)));
}
public static void OnDataContextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
DataGrid grid = d as DataGrid;
if (grid != null)
{
foreach (DataGridColumn col in grid.Columns)
{
col.SetValue(FrameworkElement.DataContextProperty, e.NewValue);
}
}
}
}
public partial class App : Application
{
static DataGridContextHelper dc = new DataGridContextHelper();
}
<DataGrid x:Name="c_dataGrid" AutoGenerateColumns="False" DataContext="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=SelectedItem}">
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Path=(FrameworkElement.DataContext), RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource HideColumnAConverter}}" />
</DataGrid.Columns>
</DataGrid>
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return Visibility.Visible;
}
// Whatever you're binding against
TestClass testClass = value as TestClass;
return testClass.ColumnAVisibility;
}
Cela fonctionne pour toute la colonne ... ce que je cherche, c'est un contrôle de rangée individuel. Par exemple, la ligne 1 a 5 colonnes et la ligne 2 a 4 colonnes parce que l'une d'elles est cachée. – AKoran
Mis à jour mon exemple, j'espère que cela va le faire :) Ajouté DataContext = "{Liative RelativeSource = {x: Source Relative Statique.Self}, Path = SelectedItem}" pour le DataGrid et un convertisseur pour chaque colonne. –
Ou peut-être un meilleur moyen de le faire sans le convertisseur si vous liez une propriété de visibilité.
- 1. WPF DataGrid Colonne ComboBox: Propagating Header Combobox dans la colonne
- 2. WPF DataGrid Masquer la ligne sélectionnée?
- 3. Déplacer le focus à la première colonne de la nouvelle ligne dans DataGrid (WPF)
- 4. Flex DataGrid Largeur de colonne
- 5. WPF - Affichage de l'info-bulle de la colonne DataGrid en fonction de la longueur des données de la colonne
- 6. WPF DataGrid Bouton Colonne Désactiver
- 7. Flex DataGrid avec la colonne de numéro de ligne
- 8. WPF DataGrid Colonne Largeur CodeBehind
- 9. WPF - Aide sur la colonne ComboBox de DataGrid dans UserControl
- 10. Validation de colonne Force DataGrid (WPF)
- 11. colonne Bind WPF DataGrid à un autre
- 12. WPF Data Grid - Comment masquer la colonne/ligne suivante visible?
- 13. Comment ajouter dynamiquement la colonne Button to WPF Datagrid?
- 14. WPF DataGrid: Annuler la sélection de la première ligne par défaut
- 15. WPF Définir la visibilité via la liaison
- 16. Liaison de visibilité de la colonne de données de la boîte à outils WPF
- 17. Wpf liaison à la visibilité de WindowsFormHost
- 18. WPF - Alignement d'en-tête de colonne DataGrid
- 19. WPF Datatrigger pour DataGrid ne changeant que la ligne entière
- 20. Contrôlez la visibilité de la colonne gridview en utilisant javascript
- 21. DataGrid WPF: comment trier une colonne par programme?
- 22. Regroupement par glisser-déposer dans WPF DataGrid
- 23. Liaison de la propriété Visible d'un DataGridColumn dans WPF DataGrid
- 24. comment cacher la colonne DataGrid
- 25. WPF DataGrid - Définition de RowDetails par programme
- 26. ASP.NET Datagrid - masquer une ligne/colonne spécifique
- 27. WPF DataGrid trier par zone ComboBox
- 28. colonne par défaut de tri de DataGrid
- 29. Accès WPF Élément de ligne DataGrid
- 30. WPF DataGrid - Masquage d'une colonne à l'aide d'un CheckBox
Bonne réflexion :) –