Можно ли сделать “математику” в Стилях WPF, которые с привязкой к данным

Вы можете вручную обращаться с файлами cookie, необходимыми для поддержания состояния сеанса (см. Обработка файлов cookie в PhoneGap / Cordova ), если только для вашей страницы IIS не требуется файлы cookie только с HTTP , для чего потребуется по крайней мере, плагин для отправки правильных заголовков, так как браузер не позволит вам установить это значение.

9
задан Geoff Cox 29 November 2008 в 18:40
поделиться

4 ответа

В настоящее время XAML не анализирует выражения в Обязательном синтаксисе и т.д. Однако можно использовать IValueConverter или IMultiValueConverter для выручения себя:

XAML:

<Setter.Value>
    <ControlTemplate TargetType="{x:Type Button}">
       <Grid x:Name="Grid">
         <Grid.Resources>
             <local:ThicknessAdditionConverter x:Key="AdditiveThickness" />
         </Grid.Resources>
         <Border x:Name="Border">
             <Border.Padding>
                 <Binding Path="Padding" RelativeSource="{RelativeSource TemplatedParent}"
                          Converter="{StaticResource AdditiveThickness}">
                     <Binding.ConverterParameter>
                         <Thickness>2,0,0,0</Thickness>
                     </Binding.ConverterParameter>
                 </Binding>
             </Border.Padding>
         </Border>
 ...
</Setter.Value>  

IValueConverter кодируют позади:

public class ThicknessAdditionConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null) return new Thickness(0, 0, 0, 0);
        if (!(value is Thickness)) throw new ArgumentException("Value not a thickness", "value");
        if (!(parameter is Thickness)) throw new ArgumentException("Parameter not a thickness", "parameter");

        var thickness = new Thickness(0, 0, 0, 0);
        var t1 = (Thickness)value;
        var t2 = (Thickness)parameter;

        thickness.Left = t1.Left + t2.Left;
        thickness.Top = t1.Top + t2.Top;
        thickness.Right = t1.Right + t2.Right;
        thickness.Bottom = t1.Bottom + t2.Bottom;

        return thickness;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
9
ответ дан 4 December 2019 в 11:44
поделиться

Существует продукт, доступный по Blendables.com под названием Привязка Оценки, и Простая Привязка делает это теперь. (Продукт не является бесплатным), Выезд техническое описание здесь

Например, для рева XAML кодируют Вас, нуждаются в преобразователе, чтобы сделать операцию.

<Ellipse Fill="Blue" Height="50"
    Width="{Binding RelativeSource={RelativeSource Self}, 
        Path=Height, Converter={StaticResource MyConverter}}" />

Но с EvalBinding можно сделать как рев

    <Ellipse Fill="Blue" Height="50"
    Width="{blendables:EvalBinding [{Self}.Height]/2}" />
3
ответ дан 4 December 2019 в 11:44
поделиться

Нет, не в этой версии XAML - используют Преобразователь Значения, чтобы сделать Вашу математику.

2
ответ дан 4 December 2019 в 11:44
поделиться

Проверьте ExpressionConverter в этой библиотеке.

2
ответ дан 4 December 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: