使用多重绑定切换绑定源

发布于 2024-10-29 02:23:36 字数 158 浏览 4 评论 0原文

我有一个带有两个 ObservableCollections 多重绑定的 DataBinding,并且我想使用 MultiConverter 在条件下在它们之间进行切换。 因此转换器提供了正确的集合,但绑定似乎没有更新。

有什么想法吗?

问候,

于尔根

I have a DataBinding with a MultiBinding of two ObservableCollections, and i want to switch between them on a condition with a MultiConverter.
So the converter gives the right collection, but the binding doesn't seem to be updated.

Any Ideas??

Greets,

Jürgen

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦幻之岛 2024-11-05 02:23:36

这是您需要的转换器:

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 属性

This is the converter you need:

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();
    }
}

registering the converter:

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

usage of the binding:

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

under the assumption that you have a FirstCollection, a SecondCollection, and an IsFirst Properties in the DataContext

墨洒年华 2024-11-05 02:23:36

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

如果是这样,您的绑定应该处于双向模式:

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

Do you need the view to update the source lists?

If so, your binding should be in TwoWay mode:

<TextBox Text="{Binding Source, Mode="TwoWay"}" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文