2010-09-14 33 views
1

J'utilise un DataTrigger pour remplacer les cellules vides par du texte '-'. Mon code:définition de texte sur DataGridTextColumn

<DataGridTextColumn Header="Time taken" Binding="{Binding Path=finish}" Width="Auto" x:Name="x"> 
    <DataGridTextColumn.ElementStyle> 
      <Style TargetType="{x:Type TextBlock}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=finish}" Value="{x:Null}"> 
         <Setter Property="TextBlock.Text" Value="-" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
    </DataGridTextColumn.ElementStyle> 
    </DataGridTextColumn> 

Mais je ne pouvais pas trouver le texte étant défini. J'ai essayé de changer l'arrière-plan du TextBlock et son fonctionnement. Pourquoi ne puis-je pas définir la propriété Text?

Répondre

3

La liaison dans la colonne peut remplacer le Setter.

Mais vous n'avez pas besoin d'un déclencheur de données pour le faire. Comme il existe une propriété dans la liaison que vous pouvez définir pour ces types de scénarios. TargetNullValue vous permet de définir une valeur dans le cas où le chemin des liaisons est NULL.

Binding="{Binding Path=finish, TargetNullValue=Whatever you want}"

Taken From: What's the simplest way to display NULL values as "NULL" with WPF Data Binding?

+0

Salut val, Merci pour la meilleure façon! . BTW puis-je savoir pourquoi cela ne marcherait pas sur mon chemin? – sarath

+0

Val- Le déclencheur semble fonctionner, sinon je ne voudrais pas obtenir la propriété d'arrière-plan. Et yeh, j'ai même essayé de mettre la propriété à 'Texte'. Didnt travail :( – sarath

+0

Oui, mais vous n'avez pas explicitement lié la propriété d'arrière-plan dans la déclaration des colonnes.Il n'y a rien à interférer avec ce travail – Val

1

Namespace xmlns: sys = "clr-namespace: System; assemblage = mscorlib"

<DataGridTextColumn Header="Time taken" Binding="{Binding Path=finish}" Width="Auto"  x:Name="x"> 
<DataGridTextColumn.ElementStyle> 
     <Style TargetType="{x:Type TextBlock}"> 
      <Setter Property="Text" Value="{Binding Path=finish}"></Setter> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=finish}" Value="{x:Static sys:String.Empty}"> 
        <Setter Property="Text" Value="-"></Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
</DataGridTextColumn.ElementStyle> 
</DataGridTextColumn> 
+0

Puis-je savoir pourquoi vous avez ajouté cette réponse? – sarath

+0

Comme le style d'élément est remplacé, vous devez définir la valeur de texte puis définir le déclencheur de vérification des données nulles ou vides pour la cellule DataGrid. – Bindya