2012-03-28 3 views
2

Wie ich in einer aktuellen Frage zu how to show strings with carriage returns in a gridview erwähnt habe, habe ich mich auch gefragt, wie diese bestimmte Zeichenfolge im laufenden Betrieb anders formatiert werden.Wie Konvertierungen oder Anwenden von Transformationen auf eine an eine Gridview-Spalte gebundene Zeichenfolge in WPF

Die Zeichenfolge, die aus der Datenbank zurückkommt, hat Zeilenumbrüche. Es wird dann zu einem Gridviewcolumn wie diese direkt gebunden:

<GridViewColumn Width="365" Header="Desc" DisplayMemberBinding="{Binding desc}" /> 

Sagen wir, ich will diese Zeilenumbrüche entfernen, eine String.Replace verwenden, aber ohne dabei die Datentabelle zu verändern die gridview ist verpflichtet.

Ich habe etwas Ähnliches in ASP.net mit der Repeater.OnItemDataBound Methode, Formatierung oder dergleichen anwenden.

+0

See [diese Antwort auf Konvertern] (http://stackoverflow.com/a/2116638/54557). – markmuetz

Antwort

2

Sie müssten einen Wert Konverter machen:

[ValueConversion(typeof(string), typeof(string))] 
public class ReplaceCarriageReturnConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value as string == null ? string.Empty : (value as string).Replace("\r", " - "); ; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Ihr Konverter erklären:

<local:ReplaceCarriageReturnConverter x:Key="ReplaceCarriageReturnConverter"/> 

Ändern Sie bitte Ihre Bindung:

<GridViewColumn Width="365" Header="Desc" DisplayMemberBinding="{Binding desc, Converter={StaticResource ReplaceCarriageReturnConverter}}" /> 
0

Sie können einen Valueconverter verwenden, um auf Ihre Bindung . Lesen Sie die Dokumentation auf MSDN hier:

http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

Grundsätzlich Sie eine Klasse erstellen IValueConverter Implementierung und im Convert Methode, konvertieren Sie die Zeichenfolge nur, wie Sie möchten (entfernen Zeilenumbrüche in Ihrem Fall).

Wenn dieser Konverter zu Ihrer Bindung hinzugefügt wird (siehe Link für Details), zeigt Ihre GridViewColumn den von Ihrem ValueConverter zurückgegebenen Wert an.
Da der Wert nur vor der Anzeige geändert wird, wird Ihre DataTable nicht geändert.

Hier ist ein tuturial zur Verwendung von ValueConverters:

http://wpftutorial.net/ValueConverters.html

+0

Können Sie ein Beispiel geben, wie es im XAML aussehen würde? – jmlumpkin

+0

Ich habe einen Link zu meinem Post hinzugefügt, der erklärt, wie man den Konverter in dein Xaml bringt. – Botz3000

Verwandte Themen