使用MultiBinding切换绑定源

时间:2011-04-04 08:16:42

标签: wpf data-binding observablecollection

我有一个带有两个ObservableCollections的MultiBinding的DataBinding,我想在具有MultiConverter的条件下切换它们。 所以转换器提供了正确的集合,但绑定似乎没有更新。

任何想法?

迎接,

尔根

2 个答案:

答案 0 :(得分:5)

这是您需要的转换器:

public class SwitchCollectionsConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool b = (bool)values[2];

        if (b)
            return values[0];
        else
            return values[1];
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

注册转换器:

    <local:SwitchCollectionsConverter x:Key="TheConverter" />

绑定的用法:

    <ItemsControl>
        <ItemsControl.ItemsSource>
            <MultiBinding Converter="{StaticResource TheConverter}">
                <Binding Path="FirstCollection" />
                <Binding Path="SecondCollection" />
                <Binding Path="IsFirst" />
            </MultiBinding>
        </ItemsControl.ItemsSource>
    </ItemsControl>

假设您在DataContext中有FirstCollection,SecondCollection和IsFirst属性

答案 1 :(得分:0)

您是否需要视图来更新源列表?

如果是这样,您的绑定应该是TwoWay模式:

<TextBox Text="{Binding Source, Mode="TwoWay"}" />