IValueConverter возвращается как объект, а не как ожидаемое значение - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь преобразовать строку на метке (или что-нибудь еще) в другую строку. Это для значков шрифтов.

Конвертер

  [ValueConversion(typeof(string), typeof(string))]
    public class StringToIconConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string property = ((string)value).ToLower();
            switch (property)
            {
                case "maximize": return @"\e901";
                default return property;
            }
        }
         public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return DependencyProperty.UnsetValue;
        }

      ...

   }

Затем я добавил его на мои страницы, которые нуждаются в этом

        <Helpers:StringToIconConverter x:Key="Icon" />

И вот как я установить его

<Button Style="{StaticResource NavButton}"
                        Tag="Document"
                        Command="{Binding GotoDataMatrixEnterCommand}">
    <Button.Content>
        <Label Content="{Binding Source={RelativeSource Self}, 
                         Path=Tag,
                         Converter={StaticResource Icon}, 
                         UpdateSourceTrigger=LostFocus}" 
                         Tag="Document" />
    </Button.Content>
</Button>

И то, что я получаю, это

Windows.System.Control.Label на своем месте. Я не конвертирую это должным образом, я не совсем уверен, почему это не заменяет правильную информацию. Я попробовал несколько вещей, и читал онлайн, хотя я застрял на данный момент. Плюс, когда я пытаюсь отладить, это не работает (оно никогда не достигает точек останова)

1 Ответ

0 голосов
/ 09 апреля 2020

Проблема связана с привязкой к метке. Содержание. Вы должны использовать RelativeSource, а не Source.

Это должно быть:

RelativeSource={RelativeSource Mode=Self}

Кроме того, у вас есть ошибка syntacti c в операторе switch StringToIconConverter: default return property; должно быть default: return property; (вам не хватает двоеточия).

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