Отображение отрицательного значения как положительного на xaml - PullRequest
0 голосов
/ 15 марта 2019

<TextBlock Text="{Binding Value}"></TextBlock>

  private int exvalue = -1;

    public int Value
    {
        get { return exvalue; }
        set { exvalue = value;  OnPropertyChanged(new PropertyChangedEventArgs("Value"));}
    }

Мне просто нужно преобразовать отрицательный, чтобы отобразить как положительный на XAML.Пожалуйста, обратите внимание, что я знаю, что могу добиться этого с помощью конвертера, мне было интересно, есть ли более простой способ сделать это.и это более сложно, чем то, что значение на самом деле привязано к столбцу Datagrid, а значение исходит из dll, которые я не могу изменить. Любая помощь будет принята.

Ответы [ 4 ]

3 голосов
/ 15 марта 2019

если вы хотите это в XAML, вы можете использовать для этого строковый формат:

 <TextBlock  Text="{Binding Value, StringFormat={}{0:#; #}}" />

string-format-int

0 голосов
/ 15 марта 2019

Простым решением было бы использование троичного оператора в get, если вы хотите избежать использования какого-либо преобразователя.

get { return exvalue < 0 ? exvalue * -1 : exvalue ; }
0 голосов
/ 15 марта 2019

попробуйте установить значение в SET accessor свойства.

private int exvalue = -1;

public int Value
{
    get { return exvalue; }
    set 
        { 
             if(exvalue<0)
             {
                exvalue = Math.Abs(value);
             } 
             else
             {
                exvalue=value;
             }
             OnPropertyChanged(new PropertyChangedEventArgs("Value"));}
}
0 голосов
/ 15 марта 2019

Вы можете использовать Math.Abs(), Abs как в абсолютном значении. Класс Math содержит множество удобных математических методов и классов, например, комплексные числа, sin / cos / tan и т. д.

https://docs.microsoft.com/en-us/dotnet/api/system.math.abs?view=netframework-4.7.2

например. в коде C #.

private int exvalue = -1;

    public int Value
    {
        get { return Math.Abs(exvalue); }
        set { exvalue = value;  OnPropertyChanged(new PropertyChangedEventArgs("Value"));}
    }

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

Если вы действительно не можете редактировать код, который вы нам показали, и в этом случае зачем его вообще публиковать, то создайте промежуточный класс, который получает значения из коллекции, абсолютные требуемые значения для этого, а затем связывает это с xaml.

Это в значительной степени требуется при работе с данными в разных форматах, чем когда вы не можете напрямую манипулировать этими данными. Подумайте о создании метода или нового свойства без установщика, но с получателем, который возвращает абсолютные значения, если вы хотите сохранить интерфейс связанных объектов.

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