Скрыть форматирование мультисвязывания, когда привязка возвращает ноль - PullRequest
3 голосов
/ 30 декабря 2010

Я пытался связать свойство временного интервала с текстовым блоком, который, кажется, решается с помощью помощь это сообщение

Теперь я хочу скрыть StringFormat, когда данные равны NULL. Из потока, если я использую привязку mutibinding со строковым форматом, и если мои данные имеют значение NULL, тогда строковый формат отображает только «:»

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}:{1}">
            <Binding Path="MyTime.Hours" TargetNullValue={x:Null}/>
            <Binding Path="MyTime.Minutes" TargetNullValue={x:Null}/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Как я могу скрыть ":", если данные нулевые

Ответы [ 2 ]

5 голосов
/ 30 декабря 2010

Я в основном отвечаю на то же, что и Николя Репике, но в любом случае ..
Такое ощущение, что здесь отсутствует какая-то часть в рамках.Насколько я знаю, нет способа заставить MultiBinding использовать FallbackValue без конвертера.Использование этого подхода, вероятно, вернет вас к квадрату 1, так как ваш последний вопрос был о лучшем подходе, чем использование конвертера:)

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}:{1}"
                      Converter="{StaticResource FallbackConverter}"
                      FallbackValue="">
            <Binding Path="MyTime.Hours" />
            <Binding Path="MyTime.Minutes" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

А конвертер в основном делает то, что вы «должны» иметь возможность использоватьНедвижимость за

public class FallbackConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        foreach (object value in values)
        {
            if (value == DependencyProperty.UnsetValue)
            {
                return DependencyProperty.UnsetValue;
            }
        }
        return values;
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
2 голосов
/ 30 декабря 2010

Взгляните на запасное значение множественного связывания здесь .

...