我正在尝试将我的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绑定到PropertySelectionOne
和PropertySelectionTwo
,它们将包含对我的ViewModel中所选属性的引用。例如,PropertySelectionOne
可以包含PropOne
和PropTwo
,PropertySelectionTwo
可以包含PropTwo
和PropThree
。
是否有一种简单的方法可以将这些属性“分组”到要绑定的新属性,而无需更改应用程序的体系结构?
由于
答案 0 :(得分:0)
如果您有不同的属性要在不同的列表框中显示相同的日期类型,那么可以说您需要拆分视图模型,但是您说您不想更改应用程序的体系结构,是你的选择。
因此,您需要做的是为每个ListBox提供不同的 ItemTemplate ,以定义哪些属性以及您希望如何在每个ListBox中显示。然后,您可以将所有列表框的 ItemsSource 绑定到同一个数据源,但它们将根据ItemTemplate显示不同的属性。
不确定您对这些概念的熟悉程度,但您知道 ItemsSource 需要是数据实例的集合(SomeViewModel
?),对吗?