Как сделать DataTrigger со стилем с помощью WPF? [Дубликат]

ДЛЯ SWIFT 3:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    if textField == phoneField
    {
        let newString = NSString(string: textField.text!).replacingCharacters(in: range, with: string)
        let components = newString.components(separatedBy: NSCharacterSet.decimalDigits.inverted)

        let decimalString = NSString(string: components.joined(separator: ""))
        let length = decimalString.length
        let hasLeadingOne = length > 0 && decimalString.character(at: 0) == (1 as unichar)

        if length == 0 || (length > 10 && !hasLeadingOne) || length > 11
        {
            let newLength = NSString(string: textField.text!).length + (string as NSString).length - range.length as Int

            return (newLength > 10) ? false : true
        }
        var index = 0 as Int
        let formattedString = NSMutableString()

        if hasLeadingOne
        {
            formattedString.append("1 ")
            index += 1
        }
        if (length - index) > 3
        {
            let areaCode = decimalString.substring(with: NSMakeRange(index, 3))
            formattedString.appendFormat("(%@)", areaCode)
            index += 3
        }
        if length - index > 3
        {
            let prefix = decimalString.substring(with: NSMakeRange(index, 3))
            formattedString.appendFormat("%@-", prefix)
            index += 3
        }

        let remainder = decimalString.substring(from: index)
        formattedString.append(remainder)
        textField.text = formattedString as String
        return false
    }
    else
    {
        return true
    }
}
2
задан Demarsch 3 April 2014 в 09:11
поделиться

2 ответа

Вы должны переместить Content="<" из ToggleButton в установщик Style.

Пример:

<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="ToggleButton">
            <Setter Property="Content" Value="&lt;" />

            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Content" Value="&gt;" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

Поскольку локальное значение имеет higher precedence порядок по настройкам стилей и триггерам:

  1. Принуждение системы свойств.
  2. Активные анимации или анимации с поведением Hold. 3. Local value.
  3. Свойства шаблона TemplatedParent.
  4. Неявный стиль. 6. Style triggers.
  5. Триггеры шаблонов. 8. Style setters.

...

Для получения дополнительной информации см .:

MSDN: Dependency Property Value Precedence

3
ответ дан Anatoliy Nikolaev 23 August 2018 в 02:21
поделиться

Вы отменяете Content, установленный триггером, устанавливая атрибут Content на уровне управления. Вы хотите установить его с помощью Setter в стиле Style:

<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="ToggleButton">
         <Setter Property="Content" Value="&lt;" />
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Content" Value="&gt;" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>
2
ответ дан d.moncada 23 August 2018 в 02:21
поделиться
Другие вопросы по тегам:

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