绑定到ViewModel的选择

时间:2011-04-06 11:25:12

标签: data-binding windows-phone-7

我正在尝试将我的ListBox绑定到我的ViewModel选项,因为我在Pivot中有多个ListBox,我不想为每个属性输出整个Page。为了说明我的问题,这里有一个小样本:

XAML:

    <DataTemplate x:Key="PropertyTemplate">
        <StackPanel>
            <TextBlock Text="{Binding Label}" />
            <TextBlock Text="{Binding Value}" />
        </StackPanel>
    </DataTemplate>

    <controls:Pivot>
        <controls:PivotItem>
            <ListBox ItemsSource="{Binding PropertySelectionOne}" ItemTemplate="{StaticResource PropertyTemplate}" />
        </controls:PivotItem>

        <controls:PivotItem>
            <ListBox ItemsSource="{Binding PropertySelectionTwo}" ItemTemplate="{StaticResource PropertyTemplate}" />
        </controls:PivotItem>
    </controls:Pivot>

视图模型:

public class SomeViewModel
{
    private Property _propOne;
    public Property PropOne
    {
        get { return _propOne; }
        set { _propOne = value; NotifyPropertyChanged("PropOne"); }
    }
    private Property _propTwo;
    public Property PropTwo
    {
        get { return _propTwo; }
        set { _propTwo = value; NotifyPropertyChanged("PropTwo"); }
    }
    private Property _propThree;
    public Property PropThree
    {
        get { return _propThree; }
        set { _propThree = value; NotifyPropertyChanged("PropThree"); }
    }
}

所以基本上我想将我的ListBox绑定到PropertySelectionOnePropertySelectionTwo,它们将包含对我的ViewModel中所选属性的引用。例如,PropertySelectionOne可以包含PropOnePropTwoPropertySelectionTwo可以包含PropTwoPropThree

是否有一种简单的方法可以将这些属性“分组”到要绑定的新属性,而无需更改应用程序的体系结构?

由于

1 个答案:

答案 0 :(得分:0)

如果您有不同的属性要在不同的列表框中显示相同的日期类型,那么可以说您需要拆分视图模型,但是您说您不想更改应用程序的体系结构,是你的选择。

因此,您需要做的是为每个ListBox提供不同的 ItemTemplate ,以定义哪些属性以及您希望如何在每个ListBox中显示。然后,您可以将所有列表框的 ItemsSource 绑定到同一个数据源,但它们将根据ItemTemplate显示不同的属性。

不确定您对这些概念的熟悉程度,但您知道 ItemsSource 需要是数据实例的集合(SomeViewModel?),对吗?