2011-04-06 97 views
0

我试图将我的ListBox绑定到我的ViewModel的选择,因为我在一个枢轴中有多个ListBox并且我不想输出每个属性的整个页面。为了说明我的问题,这里有一个小样本:绑定到ViewModel的选择

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

所以基本上我想我的列表框绑定到PropertySelectionOnePropertySelectionTwo,这将包含对引用我的ViewModel中的属性选择。例如,PropertySelectionOne可以包括PropOnePropTwoPropertySelectionTwo可以包括PropTwoPropThree

有没有简单的方法来将这些属性“分组”到一个新的属性来绑定而不改变我的应用程序的体系结构?从不同的列表框中相同日期类型显示

感谢

+0

创建一个ObservableCollection 。并添加PropOne和PropTwo。然后将ObservableCollection绑定到列表框的itemssource。 – 2011-04-06 11:49:49

+0

埃文,我真的尝试过,但它似乎收集有正确数量的项目,但它们始终为空。我这样做的方式只是'ObservableCollection PropertyCollection;'和在构造函数中'PropertyCollection = new ObservableCollection {PropOne,PropTwo}' – RajenK 2011-04-06 12:47:18

回答

0

如果你有不同的属性,那么可以说你需要分割你的浏览模式,但你说你不想改变您的应用程序的架构,这是您的选择。

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

不知道你对这些概念有多熟悉,但你知道ItemsSource需要是你的数据实例的集合(SomeViewModel?),对不对?

+0

感谢Derek,我已经考虑过这两个选项,但是我真正想从这里获得的收益是有一个通用的ItemTemplate并绑定到同一个ViewModel中属性的“集合”。 – RajenK 2011-04-06 12:47:58