有沒有辦法讓另一個綁定作爲回退值?WPF綁定FallbackValue設置爲綁定
我試圖做這樣的事情:
<Label Content="{Binding SelectedItem.Name, ElementName=groupTreeView,
FallbackValue={Binding RootGroup.Name}}" />
如果任何人有另一種伎倆,把它關閉,這將是巨大的。
有沒有辦法讓另一個綁定作爲回退值?WPF綁定FallbackValue設置爲綁定
我試圖做這樣的事情:
<Label Content="{Binding SelectedItem.Name, ElementName=groupTreeView,
FallbackValue={Binding RootGroup.Name}}" />
如果任何人有另一種伎倆,把它關閉,這將是巨大的。
你所尋找的是(this名單#6)稱爲PriorityBinding東西
(文章)
點到PriorityBinding是 名多數數據綁定的順序是最不希望的 。 這種方式如果第一個綁定失敗, 是空的和/或默認的,另一個 綁定可以取代它。
例如,
<TextBox>
<TextBox.Text>
<PriorityBinding>
<Binding Path="LastNameNonExistant" IsAsync="True" />
<Binding Path="FirstName" IsAsync="True" />
</PriorityBinding>
</TextBox.Text>
</TextBox>
在什麼條件下,您希望使用回退值?你如何確定綁定失敗?即使綁定爲空值,綁定仍然有效。
我認爲一個很好的選擇可能是使用轉換器轉換爲默認值,如果綁定返回null。我不確定如何默認到另一個綁定值。
在我的情況下,這是我90%的地方+肯定DataContext會在它上面有一個特定的屬性,但是我想回到調用'.ToString()'的地方/如果沒有。 – tobriand 2017-02-08 13:53:35
如果遇到問題,結合空值和PriorityBinding(如擺振指出的),你可以使用MultiBinding去和MultiValueConverter這樣的:
public class PriorityMultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.FirstOrDefault(o => o != null);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
用法:
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource PriorityMultiValueConverter}">
<Binding Path="LastNameNull" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBox.Text>
</TextBox>
問題是,PriorityBinding將空字符串視爲成功綁定 – Shimmy 2010-02-08 20:39:59
[MSDN](https://msdn.microsoft.com/zh-cn/library/system.windows.data.prioritybinding%28v=vs.110 %29.aspx):'DependencyProperty.UnsetValue的值不被視爲成功的返回值。「 - 所以只需在綁定中使用Converter即可,如果您的值爲null,則返回該屬性。 @Shimmy – 2015-11-05 09:14:38