在我的页面上,我有LongListSelector
& DatePicker
如下所示。
<phone:LongListSelector ItemsSource="{Binding Categories, Mode=TwoWay}"
Name="llsCategories"
ItemTemplate="{StaticResource AllCategories}"/>
<toolkit:DatePicker Name="dpDate" Value="{Binding LastModifiedOn,Mode=TwoWay}"/>
以下是我为LongListSelector
定义DataTemplate的方法。请注意,GroupName
属性
<DataTemplate x:Key="AllCategories">
<StackPanel Orientation="Vertical">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions >
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<RadioButton Content="{Binding CategoryName, Mode=TwoWay}"
IsChecked="{Binding IsCategorySelected, Mode=TwoWay}"
GroupName="categoryList"/>
</Grid>
</StackPanel>
</DataTemplate>
LongListSelector Categories
的数据源是我的Viewmodel中的IList<Category>
,它已经实现了INotifyPropertyChanged
这是我数据绑定的方式。
在页面构造函数中:
this.DataContext = App.ViewModel
在App.xaml中
private static MainViewModel viewModel = null;
public static MainViewModel ViewModel
{
get
{
// Delay creation of the view model until necessary
if (viewModel == null)
viewModel = new MainViewModel();
return viewModel;
}
}
问题:我选择了我的LongListSelector中显示的其中一个类别(单选按钮),然后当我完成选择日期时间时,之前勾选的单选按钮将被取消选中。为什么?
修改 这是sample code。您将需要VS 2012.运行该项目。选择第一个或最后一个单选按钮然后选择日期。观察以前选择的单选按钮现在未被选中。
答案 0 :(得分:0)
有几个问题。您的主要绑定问题是IsCategorySelected
属性位于MainViewModel
而不是Category
(因为您绑定了Category
的所选属性而不是MainViewModel
)
此外,我不会在MainViewModel.Categories
中不断重新创建类别列表,而是在构造函数中初始化列表一次,如:
public MainViewModel()
{
_categories = new List<Category>();
Category c1 = new Category { CategoryName = "Hi" };
Category c2 = new Category { CategoryName = "Hello" };
Category c3 = new Category { CategoryName = "Howdy" };
_categories = new List<Category>();
_categories.Add(c1);
_categories.Add(c2);
_categories.Add(c3);
}
希望有所帮助!