Windows phone 7 ListPicker不使用MVVM指示灯
我正在构建一个简单的windown phone 7页面。我正在做MVVM(使用mvvmlight)并将Windows phone 7 ListPicker不使用MVVM指示灯,windows-phone-7,mvvm,mvvm-light,listpicker,Windows Phone 7,Mvvm,Mvvm Light,Listpicker,我正在构建一个简单的windown phone 7页面。我正在做MVVM(使用mvvmlight)并将Listtype属性绑定到ListPicker。该属性在名为AddExpenseViewModel的视图模型中定义,如下所示 public class AddExpenseViewModel:ViewModelBase { public List<Category> Categories { get { return categories; }
List
type属性绑定到ListPicker
。该属性在名为AddExpenseViewModel
的视图模型中定义,如下所示
public class AddExpenseViewModel:ViewModelBase
{
public List<Category> Categories
{
get { return categories; }
set
{
categories = value;
RaisePropertyChanged("Categories");
}
}
}
在我的XAML中,我首先将资源定义为
然后将包含列表选择器的网格的DataContext
设置为
<Grid x:Name="ContentPanel"
Grid.Row="1"
Margin="13,1,11,-1"
DataContext="{Binding Path=AddExpenseViewModel,
Source={StaticResource ViewModelLocator}}">
这是行不通的。列表选择器始终为空。我在这里做错了什么吗?在运行应用程序时,是否在输出中看到任何Xaml绑定错误
如果要在父元素(网格)上绑定DataContext,也不必在ListPicker上绑定它。这可能是您的问题,但绑定错误应该提供一些详细信息。资源的密钥与类型相同可能是问题所在。您可以更改大小写或完全重命名
尝试:
您也不需要将网格的DataContext和ListPicker设置为相同的内容。如果您只在ListPicker中使用VML,我也不会在网格上设置它
你应该使用一个双向的
绑定和一个列表选择器,因为它需要跟踪所选的项目经过大量的消防工作后,我自己得到了这个。这是我为了让它工作而做的改变
我介绍了一个新的类,如下所示
public class Categories : ObservableCollection<Category>
{
}
然后我将listpicker上的ItemsSource更改为
ItemsSource="{Binding Path=Categories}"
这使它工作起来。我在输出窗口中看到绑定错误,但这没有多大帮助。如果删除ListPicker的DataContext,则会得到一个MS.Internal.WrappedException类型的异常,消息为“0x8000ffff”。我正在更新问题的更多细节。你能在绑定窗口中发布你看到的消息吗?它通常解释了什么属性失败以及如何失败。我的问题已经解决了。我已经用详细信息更新了问题。如果我删除ListPicker的DataContext,那么我会得到一个MS.Internal.WrappedException类型的异常,消息为“0x8000ffff”。我正在用进一步的细节更新问题。我找到了此错误的原因。它与数据绑定无关。ItemTemplate中的边框的高度和宽度设置为“*”。将此项更改为Auto
后,异常消失
<bs:ViewModelLocator x:Key="locator" />
DataContext="{Binding AddExpenseViewModel, Source={StaticResource locator}}"
public class Categories : ObservableCollection<Category>
{
}
public Categories Categories
{
get { return categories; }
set
{
categories = value;
RaisePropertyChanged("Categories");
}
}
private Categories categories;
ItemsSource="{Binding Path=Categories}"