मैं पूछता हूं क्योंकि यह काम नहीं कर रहा है।FallbackValue मल्टीबाइंडिंग के साथ कैसे काम करता है?
मान लें हम निम्नलिखित वस्तु के लिए बाध्य कर रहे हैं:
public class HurrDurr
{
public string Hurr {get{return null;}}
public string Durr {get{return null;}}
}
खैर, यह लगता है कि अगर हम इस्तेमाल किया एक MultiBinding इस के खिलाफ फ़ॉलबैक मान, दिखाया जाएगा है ना?
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} to the {1}"
FallbackValue="Not set! It works as expected!)">
<Binding Path="Hurr"/>
<Binding Path="Durr"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
हालांकि परिणाम है, वास्तव में, "से"। भी बाइंडिंग के लिए मजबूर कर वापस जाने के लिए DependencyProperty.UnsetValue
काम नहीं करता:
<TextBlock xmnlns:base="clr-namespace:System.Windows;assembly=WindowsBase">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} to the {1}"
FallbackValue="Not set! It works as expected!)">
<Binding Path="Hurr"
FallbackValue="{x:Static base:DependencyProperty.UnsetValue}" />
<Binding Path="Durr"
FallbackValue="{x:Static base:DependencyProperty.UnsetValue}" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
TargetNullValue है, जो भी एक प्रतिमा के आसपास सभी तरह था के साथ एक ही कोशिश की।
तो ऐसा लगता है कि MultiBinding कभी FallbackValue का उपयोग कभी नहीं होगा। क्या यह सच है, या क्या मुझे कुछ याद आ रही है?
एक छोटे से अधिक चारों ओर खिलवाड़ और मैंने पाया कि एक कनवर्टर UnsetValue लौट सकते हैं मैं की जरूरत है:
class MultiValueFailConverter : IMultiValueConverter
{
public object Convert(
object[] values,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
if (values == null ||
values.Length != 2 ||
values.Any(x=>x == null))
return System.Windows.DependencyProperty.UnsetValue;
return values;
}
public object[] ConvertBack(
object value,
Type[] targetTypes,
object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException("Too complex hurt brain.");
}
}
बहरहाल, यह एक गंदा गंदी हैक की तरह लगता है। मुझे लगता है कि इस तरह के एक परिदृश्य ढांचे में जिम्मेदार होगा। हालांकि, मुझे परावर्तक में कुछ भी नहीं मिला है।
अच्छा सवाल !! – Chris