【问题标题】:Databinding in Silverlight listbox from two lists collectionSilverlight 列表框中来自两个列表集合的数据绑定
【发布时间】:2011-11-08 18:01:27
【问题描述】:

我想从两个列表集合中绑定列表框的数据,这是我的 scnerio

我有两个列表如下

public List<TipSync.TipCategories> tipCategories;

    public List<TipSync.TipCategories> TipCategories
    {
        get
        {
            return tipCategories;
        }
        set
        {
            tipCategories = value;
            NotifyPropertyChanged("TipCategories");
        }
    }

    public List<TipSync.CategorySubscribed> categorySubscribed;

    public List<TipSync.CategorySunscribed> CategorySubscribed
    {
        get
        {
            return tips;
        }
        set
        {
            categorySubscribed = value;
            NotifyPropertyChanged("Tips");
        }
    }

我有一个带有文本块和按钮的列表框,listbox.itemsource 设置为 Tipcategories

<ListBox x:Name="TipCategoriesLB" Height="449" HorizontalAlignment="Left" Margin="5,49,0,0" VerticalAlignment="Top" Width="410" SelectionChanged="TipCategoriesLB_SelectionChanged">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding CategoryName}"/>
                                <Button Name="SubscribeBtn" Content="" Tap="Subscribe_Tap"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

现在如果 CategorySubscribed 列表包含值为TipCategory.CategoryID 的项目,我想在按钮的内容中显示“Subscribed”,否则为Unsubscribed。我该怎么做?

【问题讨论】:

    标签: silverlight windows-phone-7 data-binding collections


    【解决方案1】:

    纳瓦兹,

    不完全是您正在寻找的答案;但是我问你这个.. 为什么不给 TipCategories 列表中的每个对象添加一个标志,表明它是否被订阅?当订阅/取消订阅发生时,这可以在每个类别的代码中进行操作。这种技术的优点是更容易数据绑定。您可以将 Button 的 Content 属性绑定到此标志,以使按钮说一件事而不是另一件事,并在用户单击它时采取适当的操作。

    您对此有何感想?

    谢谢!

    【讨论】:

    • 我同意这将是最好的方法。或者只是创建一个添加此属性的新对象,然后通过组合其他两个列表来创建列表。
    • +1:目前的“模型”并不适合这项任务。需要“ViewModel”适配以使 UI 实现更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2011-05-10
    • 2014-07-19
    • 2011-09-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多