Проблема преобразования текстовых блоков в WPF - PullRequest
3 голосов
/ 02 июня 2010

текстовый блок usina используется в usercontrol, но отправляю значение в текстовый блок из другой формы, когда я передаю какое-то значение, которое оно просматривает в текстовом блоке, но мне нужно преобразовать число в текст. поэтому я использовал конвертер в текстовом блоке. но не работает

 <TextBlock Height="21" Name="txtStatus" Width="65" Background="Bisque" TextAlignment="Center" Text="{Binding Path=hM1,Converter={StaticResource TextConvert},Mode=OneWay}"/>

преобразователь класса

class TextConvert : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {

        if (value != null)
        {
            if (value.ToString() == "1")
            {
                return value = "Good";

            }
            if (value.ToString() == "0")
            {
                return value = "NIL";

            }

       }
        return value = "";
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (string)value;
    }

}

это правильно? что в этом плохого ??

Ответы [ 3 ]

3 голосов
/ 02 июня 2010

хорошо, я думаю, что знаю, в чем проблема - давайте посмотрим, смогу ли я определить это для вас:)

в вашем xaml-файле, где вы хотите использовать TextConvert, определите для него Resource (если вы этого не делаете, тогда я понятия не имею, почему он не работает)

    <Grid.Resources>
        <Shared:TextConvert x:Key="TextConvertKey" />
    </Grid.Resources>

поделился тем, что является xmlns ofcourse.

Затем в текстовом поле используйте его как:

Text="{Binding Path=hM1,Converter={StaticResource TextConvertKey},Mode=OneWay}"/>

EDIT:

Если вы устанавливаете точку останова в классе конвертера, идет ли отладчик туда ?????

РЕДАКТИРОВАТЬ 2:

пользуюсь вот так вуду

local: HealthTextConvert x: Key = "TextConvert"

Это абсолютно неправильно. Как вы можете назвать это HealthTextConvert, если имя конвертера TextConvert ???

должно быть

local:TextConvert x:Key="whateverKeyNameYouWant"

и

в текстовом поле должно быть

Text="{Binding Path=hM1,Converter={StaticResource whateverKeyNameYouWant},Mode=OneWay}"
1 голос
/ 05 октября 2010

Я сразу вижу проблему с определением вашего конвертера.

class TextConvert : IValueConverter
{
    ...

Должен быть объявлен общедоступным, чтобы иметь возможность использовать его в качестве ресурса.

public class TextConvert : IValueConverter
{
    ...

Кроме того, нехорошо делать это ...

return value = "Good";

...

return value = "NIL";

Так и должно быть (хотя это не имеет значения, если вы его оставите, просто плохое программирование = P):

return "Good";

...

return "Nill";
0 голосов
/ 02 июня 2010

Попробуйте удалить Path в строке ниже

Text="{Binding **Path**=hM1,Converter={StaticResource TextConvert},Mode=OneWay}".

Иногда это работает без Path:).

Также посмотрите в окно вывода (Alt + Cntl + O) ..., чтобы увидеть, где проблема.

...