Comment appliquer MinWidth pour ListView colonnes dans WPF dans le modèle de contrôle?
À la suite de la réponse à une question similaire ici, j'ai été en mesure de définir la MinWidth sur la page XAML.
Ce que je voudrais faire est d'accomplir ceci dans le modèle de contrôle pour tous les GridViewColumn tous de ListView.
Est-ce possible?
Mise à jour:
J'ai essayé un peu simple de l'exemple de code ci-dessous, mais il ne fonctionne pas:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type GridViewColumnHeader}" >
<Setter Property="MinWidth" Value="200" />
</Style>
</Window.Resources>
<Grid Width="500">
<Border BorderBrush="Black" BorderThickness="2" Margin="20">
<ListView SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="Header 1" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Hello There"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Header 2" Width="Auto" />
</GridView>
</ListView.View>
</ListView>
</Border>
</Grid>
</Window>
- GridViewColumn n'ont même pas de MinWidth de la propriété. Vous ne pouvez pas ne pouvez pas définir une Propriété dans un style ou d'un modèle de contrôle qui n'existe pas. Merci de poster votre code XAML pour la façon dont vous définissez un MinWidth sur un GridViewColumn.
- Dans le lien, il montre l'utilisation de la Manette et de la manipulation du DragDelta événement pour accomplir la MinWidth. Est-il un moyen pour ce faire dans un modèle de contrôle?
InformationsquelleAutor Elan | 2012-04-10
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez un GridViewColumnHeader vous pouvez gérer les changements de taille:
dans le Code:
Je suis tombé sur celui-ci également. Pour la résoudre, j'ai eu à faire deux choses :
ListView en-tête est GridViewColumnHeader.
Ci-dessous est une version simplifiée de GridViewColumnHeader de ControlTemplate. Comme nous pouvons le voir, il utilise un Pouce dans un Canvas pour créer le glisser/redimensionner effet.
PS: Pour obtenir la GridViewColumnHeader ControlTemplate veuillez vous référer à Comment attraper WPF 4.0 contrôle des templates par défaut?
Afin de limiter la taille de GridViewColumnHeader, nous avons besoin de crochet de Pouce événements de glissement(DragStarted, DragDelta, DragCompleted...etc).
S'est avéré tous nous avons besoin est la DragDelta de l'événement aussi longtemps que nous pouvons savoir de la MinSize dans le DragDeltaEventHandler.
Ci-après est modifiée XAML avec un commentaire.
Dans le myGridViewColumnHeaderControlTemplate ajouter un peu de code XAML:
Enfin la myGridViewColumnHeader_DragDelta fonction:
C'est la seule façon que j'ai trouver de travail. Espère bien qu'il y a un moyen plus simple.
Je voulais appliquer un minwidth à toutes les colonnes, j'ai donc écrit ceci:
Il suffit de le déposer sur votre listview: