Условный элемент в xaml в зависимости от содержимого привязки

Вот небольшой скрипт, который я использую для переключения между последними ветвями:

#!/bin/bash
# sudo bash

re='^[0-9]+ 

Использование этих двух псевдонимов

recent = for-each-ref --sort=committerdate refs/heads/ --format=' %(color:blue) %(authorname) %(color:yellow)%(refname:short)%(color:reset)'
recent-nf = for-each-ref --sort=committerdate refs/heads/ --format=' %(authorname) %(refname:short)'

Просто позвоните в git-репо, и он покажет вам последние N ветвей (по умолчанию 10) и число в каждой. Введите номер филиала и он проверяется:

enter image description here

if [[ "$1" =~ $re ]]; then lines="$1" else lines=10 fi branchs="$(git recent | tail -n $lines | nl)" branchs_nf="$(git recent-nf | tail -n $lines | nl)" echo "$branchs" # Prompt which server to connect to max="$(echo "$branchs" | wc -l)" index= while [[ ! ( "$index" =~ ^[0-9]+$ && "$index" -gt 0 && "$index" -le "$max" ) ]]; do echo -n "Checkout to: " read index done branch="$( echo "$branchs_nf" | sed -n "${index}p" | awk '{ print $NF }' )" git co $branch clear

Использование этих двух псевдонимов

recent = for-each-ref --sort=committerdate refs/heads/ --format=' %(color:blue) %(authorname) %(color:yellow)%(refname:short)%(color:reset)'
recent-nf = for-each-ref --sort=committerdate refs/heads/ --format=' %(authorname) %(refname:short)'

Просто позвоните в git-репо, и он покажет вам последние N ветвей (по умолчанию 10) и число в каждой. Введите номер филиала и он проверяется:

enter image description here

16
задан Donut 6 August 2015 в 16:03
поделиться

2 ответа

По сути, вам нужно написать IValueConverter , чтобы вы могли связать свойство Visibility вашего TextBox либо с полем Address, либо с новым полем что вы создаете.

Если вы привязываетесь к полю Address, вот как может выглядеть привязка ::

<TextBlock Text="{Binding Path=Address}"
    Visibility="{Binding Path=Address, Converter={StaticResource StringLengthVisibilityConverter}}" />

И тогда StringLengthVisiblityConverter может выглядеть примерно так:

public class StringLengthVisiblityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || value.ToString().Length == 0)
        {
            return Visibility.Collapsed;
        }
        else
        {
            return Visibility.Visible;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Don't need to implement this
    }
}

Тогда вам просто нужно добавить свой конвертер в качестве ресурса, используя такой синтаксис (где src отображается в пространство имен, где определен конвертер):

<src:StringLengthVisiblityConverter x:Key="StringLengthVisiblityConverter" />
22
ответ дан 30 November 2019 в 17:26
поделиться

Вы можете создать конвертер StringToVisibility.

Он вернет Visibility.Visible, если связанная строка is not null or empty и Visibility.Collapsed, если это так.

Используйте этот конвертер при связывании Address со свойством Visibility вашего TextBlock.

Пример:

<TextBlock Text="{Binding Path=Address}" Visibility="{Binding Address, Converter={StaticResource StringToVisibilityConverter}}" />
3
ответ дан 30 November 2019 в 17:26
поделиться
Другие вопросы по тегам:

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