2016-06-10 4 views
0

In meinem WPF XAML habe ich ein Textfeld, die an GUID-Eigenschaft in ViewModel gebunden ist, auf Anwendung laden möchte ich dieses Textfeld als leer anstelle von 00000000-0000-0000-0000-000000000000 anzeigen nach meinem xMAL und VM-Code ist,Auf Anwendung laden Anzeige leerer Wert in Textfeld, das an GUID-Eigenschaft gebunden ist

<TextBox Text="{Binding DocId, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True , 
       TargetNullValue= '', NotifyOnValidationError=True}"></TextBox> 

private Guid _docId; 
    public Guid DocId 
    { 
     get { return _docId; } 
     set 
     { 
      _docId = value; 
      OnPropertyChanged("DocId"); 
     } 
    } 

ich versuchte TargetNullValue= ' ' zu setzen, aber es funktioniert nicht, auf Anwendungslast, Textfeld Wert in UI als 00000000-0000-0000-0000-000000000000 gezeigt. Ich habe auch versucht, FallbackValue = '' zu setzen, aber das Ergebnis ist immer noch das gleiche. Irgendein Vorschlag? Ich bin neu bei WPF, jede Hilfe wäre willkommen.

Antwort

1

Sie können Ihre TextBox schreibgeschützt und die bidirektionale Einbahnstraße erstellen, wenn Sie nur eine Zeichenfolge anzeigen müssen. Dann heben Sie die Änderung einer abhängigen Zeichenfolgeneigenschaft aus dem Mengenaccessor von Guid an.

Im Ausblick:

<Grid> 
     <TextBox IsReadOnly="True" Text="{Binding GuidStr, Mode=OneWay, 

Im Ansichtsmodell:

private Guid _docId; 
public Guid DocId 
{ 
    get { return _docId; } 
    set 
    { 
     _docId = value; 
     OnPropertyChanged("DocId"); 
     OnPropertyChanged("GuidStr"); 
    } 
} 
public string GuidStr 
{ 
    get { return _docId.ToString().Replace("00000000-0000-0000-0000-000000000000", ""); } 
}