Переключение источников привязки с использованием MultiBinding - PullRequest
1 голос
/ 04 апреля 2011

У меня есть DataBinding с MultiBinding из двух ObservableCollections, и я хочу переключаться между ними при условии с MultiConverter.Таким образом, конвертер дает правильную коллекцию, но привязка, кажется, не обновляется.

Любые идеи ??

Привет,

Юрген

Ответы [ 2 ]

5 голосов
/ 04 апреля 2011

Это конвертер, который вам нужен:

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>

при условии, чтоу вас есть свойства FirstCollection, SecondCollection и IsFirst в DataContext

0 голосов
/ 04 апреля 2011

Вам нужен вид для обновления списков источников?

Если это так, ваша привязка должна быть в режиме TwoWay:

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