Je travaille sur un programme dans WPF pour la première fois. J'ai un ListView en mode GridView affichant des données d'un ensemble de données lié (qui est saisi à partir d'une base de données).Remplacer par programme le contenu des cellules GridView sur la charge
Dans ma base de données, "date de naissance" n'est pas un champ obligatoire. En tant que tel, tout enregistrement sans un dob avait la valeur définie à DateTime.MinValue
. À chacune de ces dates de valeur minimale, la date est indiquée dans la cellule 01/01/0001. J'essaie de trouver un moyen de formater la cellule afin que DateTime.MinValue
ne s'affiche pas, ou remplacer chaque MinValue
avec ""
. Mon idée était soit d'utiliser l'événement "Loaded" du bloc de texte où se trouve la date et de remplacer chaque instance de "01/01/0001", soit de boucler l'ensemble de données avant de l'envoyer à GridView et de supprimer/remplacer Là-bas. Je n'ai pas eu de chance pour savoir comment faire.
Mon code XAML pour le GridView est:
<Grid>
<ListView x:Name="resultsListView" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" Margin="0,54,0,28" ItemsSource="{Binding Path=Table}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}"
Header="Last Name"
Width="150"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}"
Header="First Name"
Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=MiddleName}"
Header="Middle Name"
Width="100"/>
<GridViewColumn Header="Date of Birth" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Justify" Text="{Binding Path=DateOfBirth, StringFormat='{}{0:MM/dd/yyyy}'}" Loaded="TextBlock_Loaded" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
Code pour le DataSet:
private void FillListView(DataSet ds)
{
if (resultsListView.Items.Count != 0)
{
resultsListView.Items.Clear();
}
resultsListView.DataContext = ds.Tables[0].DefaultView;
}
Des conseils sur la façon de montrer des blancs pour DateTime.MinValue
dans mon GridView serait très apprécié!
Parfait, merci! J'ai utilisé le code Convert/Convert Back d'ici: http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx - la seule chose qui m'a bloqué était de savoir comment déclarer mon espace de noms dans le xaml. Pour tout le monde, vous devez utiliser xmlns: local = "clr-namespace: -votre espace de noms-" –
De rien. Les convertisseurs de valeur sont vraiment utiles pour ce genre de chose. Vous pouvez définir des propriétés publiques sur votre classe de convertisseur, puis ajouter des ressources différentes avec des configurations différentes. Par exemple, vous pourriez avoir un booléen qui contrôle si DateTime.MinValue est masqué, alors vous pouvez réutiliser la même classe de différentes manières. –