C # / WPF Показать пользовательские строки (например, заменить "0" на string.empty) - PullRequest
6 голосов
/ 09 июля 2009

Я связал свой TextBox со строковым значением через

 Text="{Binding AgeText, Mode=TwoWay}"  

Как я могу отобразить string.empty или "" для строки "0" и всех других строк с их исходным значением?

Спасибо за любую помощь!

Приветствия

PS: Одним из способов может быть пользовательский ViewModel для строки ... но я бы предпочел сделать это как-то напрямую в XAML, если это возможно.

Ответы [ 3 ]

7 голосов
/ 09 июля 2009

Я нашел что-то на http://www.codeproject.com/KB/books/0735616485.aspx
Это сделает свое дело:

Text="{Binding AgeText, StringFormat='\{0:#0;(#0); }'}"

Приветствия

7 голосов
/ 09 июля 2009

Я думаю, что единственным способом использования ViewModel является создание пользовательского ValueConverter.

Итак, в основном ваш выбор:

ViewModel:

private string ageText;
public string AgeText{
    get{
        if(ageText.equals("0"))
            return string.empty;

        return ageText;
    }
    ...
}

ValueConverter:

public class AgeTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value.Equals("0"))
            return string.Empty;

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

    }
}
4 голосов
/ 09 июля 2009

Поскольку свойство Age здесь, очевидно, является числом, другим способом было бы указать Age как int и использовать атрибут StringFormat Binding:

Text="{Binding Age, Mode=TwoWay, StringFormat='{}{0:#}'}"
...