Я в основном отвечаю на то же, что и Николя Репике, но в любом случае ..
Такое ощущение, что здесь отсутствует какая-то часть в рамках.Насколько я знаю, нет способа заставить 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();
}
}