本文介绍了wp7芒果中的DataTemplateSelector的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在我的应用程序数据模板选择。我发现 。
我的项目升级到7.1后设置模板时,我得到未指定的错误。
我试图把他们的博客上发布的示例项目,并升级到芒果,它仍然有效。我不明白我做错了,因为它看起来像这样的代码是好的芒果。 ?
任何建议。



 <电网X:NAME =LayoutRoot背景=透明VerticalAlignment =弹力> 
< StackPanel的VerticalAlignment =拉伸>
< StackPanel的方向=横向>
< TextBlock的X:名称=nameBlockGrid.Row =0Grid.Column =0VerticalAlignment =中心文本=标识符/>
<文本框X:NAME =nameTextBoxGrid.Row =0Grid.Column =1文本={绑定路径=标识符,模式=双向}HEIGHT =72WIDTH = 410框TextChanged =nameTextBox_TextChanged/>
< / StackPanel的>
< StackPanel的Grid.Row =3Grid.Column =1背景=黑VerticalAlignment =拉伸>
<列表框保证金=12,12,0,0NAME =listBox1中背景=透明的ItemsSource ={绑定路径= PropertiesCollection}VerticalAlignment =拉伸HEIGHT =300>
< ListBox.ItemTemplate>
<&DataTemplate的GT;
<视图模型:ParameterTemplateSelector CONTENT ={结合}>
<视图模型:ParameterTemplateSelector.TextDataTemplate>
<&DataTemplate的GT;

<网格和GT;
< Grid.ColumnDefinitions>
< ColumnDefinition WIDTH =100>< / ColumnDefinition>
将; ColumnDefinition宽度=*>&下; / ColumnDefinition>
< /Grid.ColumnDefinitions>
< TextBlock的文本={结合重点}VerticalAlignment =中心Grid.Column =0/>
<文本框名称=propertyTextBox文本={绑定值,模式=双向}Grid.Column =1WIDTH =400框TextChanged =propertyTextBox_TextChanged/>
< /网格和GT;

< / DataTemplate中>
< /视图模型:ParameterTemplateSelector.TextDataTemplate>

<视图模型:ParameterTemplateSelector.NumberDataTemplate>
<&DataTemplate的GT;

<网格和GT;
< Grid.ColumnDefinitions>
< ColumnDefinition WIDTH =100>< / ColumnDefinition>
将; ColumnDefinition宽度=*>&下; / ColumnDefinition>
< /Grid.ColumnDefinitions>
< TextBlock的文本={结合重点}VerticalAlignment =中心Grid.Column =0/>
<文本框名称=propertyTextBox文本={绑定值,模式=双向}Grid.Column =1WIDTH =400框TextChanged =propertyTextBox_TextChanged/>
< /网格和GT;

< / DataTemplate中>
< /视图模型:ParameterTemplateSelector.NumberDataTemplate>

<视图模型:ParameterTemplateSelector.DateDataTemplate>
<&DataTemplate的GT;

<网格和GT;
< Grid.ColumnDefinitions>
< ColumnDefinition WIDTH =100>< / ColumnDefinition>
将; ColumnDefinition宽度=*>&下; / ColumnDefinition>
< /Grid.ColumnDefinitions>
< TextBlock的文本={结合重点}VerticalAlignment =中心Grid.Column =0/>
<工具箱:DatePicker的Grid.Column =1WIDTH =400VALUE ={绑定值,模式=双向}=的ValueChangedDatePicker_ValueChanged/>
< /网格和GT;

< / DataTemplate中>
< /视图模型:ParameterTemplateSelector.DateDataTemplate>

<视图模型:ParameterTemplateSelector.TimeDataTemplate>
<&DataTemplate的GT;

<网格和GT;
< Grid.ColumnDefinitions>
< ColumnDefinition WIDTH =100>< / ColumnDefinition>
将; ColumnDefinition宽度=*>&下; / ColumnDefinition>
< /Grid.ColumnDefinitions>
< TextBlock的文本={结合重点}VerticalAlignment =中心Grid.Column =0/>
<工具箱:TimePicker Grid.Column =1WIDTH =400VALUE ={绑定值,模式=双向}=的ValueChangedTimePicker_ValueChanged/>
< /网格和GT;

< / DataTemplate中>
< /视图模型:ParameterTemplateSelector.TimeDataTemplate>

< /视图模型:ParameterTemplateSelector>
< / DataTemplate中>
< /ListBox.ItemTemplate>
< /列表框>
< / StackPanel的>

< / StackPanel的>
< /网格和GT;





 公共类ParameterTemplateSelector:DataTemplateSelector 
{
公众的DataTemplate TextDataTemplate
{
搞定;
组;
}

公众的DataTemplate NumberDataTemplate
{
获得;
组;
}

公众的DataTemplate DateDataTemplate
{
获得;
组;
}

公众的DataTemplate TimeDataTemplate
{
获得;
组;
}

公众的DataTemplate PictureDataTemplate
{
获得;
组;
}

公众的DataTemplate NonParamDataTemplate
{
获得;
组;
}

公众覆盖的DataTemplate SelectTemplate(对象项目,DependencyObject的容器)
{
字符串类型=;
如果(产品IPARAM)
{
IPARAM参数=项目作为IPARAM;
型= parameter.Type;
}
,否则如果(产品键值)
{
键值K =项目作为键值;
型= k.Type;
}

开关(类型)
{
案字符串:
返回TextDataTemplate;
案文本:
返回TextDataTemplate;
案数:
返回NumberDataTemplate;
案日期:
返回DateDataTemplate;
案时间:
返回TimeDataTemplate;
案图片:
返回PictureDataTemplate;
默认:
返回TextDataTemplate;
}

}

}

公共抽象类DataTemplateSelector:ContentControl中
{
公共虚拟的DataTemplate SelectTemplate (对象项目,DependencyObject的容器)
{
返回NULL;
}

保护覆盖无效OnContentChanged(对象oldContent,对象newContent)
{
base.OnContentChanged(oldContent,newContent);

的ContentTemplate = SelectTemplate(newContent,这一点);
}
}



例外,我得到的是:



  System.Exception的发生
消息=未指定的错误
堆栈跟踪:
在MS.Internal.XcpImports.CheckHResult( UInt32的小时)
在MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement的元素,大小availableSize)
在System.Windows.FrameworkElement.MeasureOverride(尺寸availableSize)
在System.Windows.FrameworkElement.MeasureOverride (IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureOverrideNative(IntPtr的元素,单inWidth,单inHeight,单&功放; outWidth,单&安培; outHeight)
在MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement的元素,大小availableSize)
在System.Windows.FrameworkElement.MeasureOverride(尺寸availableSize)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureNative(IntPtr的元素,单inWidth,单inHeight)
在MS.Internal.XcpImports.UIElement_Measure(的UIElement元素,大小availableSize)
的系统。 Windows.UIElement.Measure(尺寸availableSize)
在System.Windows.Controls.VirtualizingStackPanel.MeasureChild(儿童的UIElement,大小layoutSlotSize)
在System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(大小限制)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureOverrideNative(IntPtr的元素,单inWidth,单inHeight,单&功放; outWidth,单&安培; outHeight)在MS.Internal.XcpImports.FrameworkElement_MeasureOverride
(FrameworkElement的元素,大小availableSize)
在System.Windows.FrameworkElement.MeasureOverride(尺寸availableSize)
的系统。 Windows.Controls.ScrollContentPresenter.MeasureOverride(大小限制)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureNative(IntPtr的元素,单inWidth,单inHeight)
在MS.Internal.XcpImports.UIElement_Measure(的UIElement元素,大小availableSize)
的系统。 Windows.UIElement.Measure(尺寸availableSize)
在System.Windows.Controls.ScrollViewer.MeasureOverride(大小限制)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&放大器; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureOverrideNative(IntPtr的元素,单inWidth,单inHeight,单&功放; outWidth,单&安培; outHeight)
在MS.Internal.XcpImports.FrameworkElement_MeasureOverride( FrameworkElement的元素,大小availableSize)
在System.Windows.FrameworkElement.MeasureOverride(尺寸availableSize)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureOverrideNative(IntPtr的元素,单inWidth,单inHeight,单,放大器; outWidth,单&功放; outHeight)
在MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement的元素,大小availableSize)
在System.Windows.FrameworkElement.MeasureOverride(尺寸availableSize)
在System.Windows.FrameworkElement.MeasureOverride( IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureOverrideNative(IntPtr的元素,单inWidth,单inHeight,单&功放; outWidth,单&安培; outHeight)
。在MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement的元素,大小availableSize)
在System.Windows.FrameworkElement.MeasureOverride(尺寸availableSize)
在Microsoft.Phone.Controls.PivotItem.MeasureOverride(尺寸availableSize)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.MeasureOverrideNative(IntPtr的元素,单inWidth,单inHeight,单&功放; outWidth,单&功放; outHeight)在MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement的元素,大小availableSize)
。在System.Windows.FrameworkElement.MeasureOverride
(面积availableSize)
在Microsoft.Phone.Controls.Pivot。的MeasureOverride(尺寸availableSize)
在System.Windows.FrameworkElement.MeasureOverride(IntPtr的nativeTarget,双inWidth,双inHeight,双&安培; outWidth,双&安培; outHeight)
在MS.Internal.XcpImports.UpdateLayoutNative(IntPtr的元素在System.Windows.UIElement.UpdateLayout在MS.Internal.XcpImports.UIElement_UpdateLayout)
(的UIElement元素)
()
在Microsoft.Phone.Controls.Pivot.OnItemsChanged(NotifyCollectionChangedEventArgs E)
。在System.Windows.Controls.ItemsControl.OnItemCollectionChanged(对象发件人,NotifyCollectionChangedEventArgs E)
在System.Windows.Controls.ItemCollection.NotifyCollectionChanged(NotifyCollectionChangedEventArgs E)
在System.Windows.Controls.ItemCollection .UpdateItemsSourceList(IEnumerable的newItemsSource)
在System.Windows.Controls.ItemsControl.ItemsSourceChanged(DependencyObject的D,DependencyPropertyChangedEventArgs E)
在System.Windows.DependencyObject.RaisePropertyChangeNotifications(DP的DependencyProperty,对象的属性oldValue,对象newValue)以
。在System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty的财产,EffectiveValueEntry oldEntry,EffectiveValueEntry&安培;在System.Windows.Data.BindingExpression.RefreshExpression新条目,ValueOperation操作)
在System.Windows.DependencyObject.RefreshExpression(DP的DependencyProperty)
()
在System.Windows.Data.BindingExpression。 SendDataToTarget()
在System.Windows.Data.BindingExpression.SourceAcquired()在System.Windows.Data.BindingExpression.System.Windows.IDataContextChangedListener.OnDataContextChanged
(对象发件人,DataContextChangedEventArgs E)
在System.Windows.Data.BindingExpression.DataContextChanged(对象发件人,DataContextChangedEventArgs E)
在System.Windows.FrameworkElement.OnDataContextChanged(DataContextChangedEventArgs E)
在System.Windows.FrameworkElement.OnAncestorDataContextChanged(DataContextChangedEventArgs E)
。在System.Windows.FrameworkElement.NotifyDataContextChanged(DataContextChangedEventArgs E)
在System.Windows.FrameworkElement.OnAncestorDataContextChanged在System.Windows.FrameworkElement.NotifyDataContextChanged(DataContextChangedEventArgs E)
(DataContextChangedEventArgs E)
。在System.Windows.FrameworkElement.OnPropertyChanged(DP的DependencyProperty)
在System.Windows.DependencyObject.RaisePropertyChangeNotifications(DP的DependencyProperty,对象的属性oldValue,对象newValue)以
在System.Windows.DependencyObject.UpdateEffectiveValue(财产的DependencyProperty ,EffectiveValueEntry oldEntry,EffectiveValueEntry&安培;新条目,ValueOperation操作)美元,System.Windows.DependencyObject.SetValueInternal(DP的DependencyProperty,对象的值,布尔allowReadOnlySet)
在System.Windows.DependencyObject.SetValueInternal(DP的DependencyProperty,对象的值)
B $ B在System.Windows.DependencyObject.SetValue(DP的DependencyProperty,对象的值)
在System.Windows.FrameworkElement.set_DataContext(对象的值)
在WPUserControls.ViewModel.ItemsTypeViewModel.AddItem(itemInstance itemInstance)
。在WPUserControls.ViewModel.ItemsTypePageViewModel.AddNewItemInstance()
在WPUserControls.Views.ItemsTypePageView.AddItem()
在WPUserControls.Views.ItemsTypePageView.addIcon_Click(对象发件人,EventArgs五)
在微软.Phone.Shell.ApplicationBarItemContainer.FireEventHandler(事件处理程序处理程序,对象发件人,EventArgs参数)
在Microsoft.Phone.Shell.ApplicationBarIconButton.ClickEvent()
在Microsoft.Phone.Shell.ApplicationBarIconButtonContainer.ClickEvent()在Microsoft.Phone.Shell.ApplicationBar.OnCommand(UInt32的id命令)
在Microsoft.Phone.Shell.Interop.NativeCallbackInteropWrapper.OnCommand(UInt32的id命令)


解决方案

在我安装SDK RC,它是固定的!我想这是一个MS错误。


I need a data template selector in my app. I found this blog that worked great on 7.0.After upgrading my project to 7.1 I get "unspecified error" when setting the template.I tried to take the sample project they publish on the blog and upgrade it to mango, and it still works. I don't get what I do wrong, because it seems like this code is Ok for mango.Any suggestions?

<Grid x:Name="LayoutRoot" Background="Transparent" VerticalAlignment="Stretch" >
    <StackPanel VerticalAlignment="Stretch">
        <StackPanel Orientation="Horizontal">
            <TextBlock x:Name="nameBlock" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Text="Identifier:" />
            <TextBox x:Name="nameTextBox" Grid.Row="0" Grid.Column="1" Text="{Binding Path=Identifier, Mode=TwoWay}" Height="72" Width="410" TextChanged="nameTextBox_TextChanged"/>
        </StackPanel>
        <StackPanel Grid.Row="3" Grid.Column="1" Background="Black" VerticalAlignment="Stretch" >
            <ListBox Margin="12,12,0,0" Name="listBox1" Background="Transparent" ItemsSource="{Binding Path=PropertiesCollection}" VerticalAlignment="Stretch" Height="300" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <ViewModel:ParameterTemplateSelector Content="{Binding}">
                            <ViewModel:ParameterTemplateSelector.TextDataTemplate>
                                <DataTemplate>

                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="100"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Text="{Binding Key}" VerticalAlignment="Center" Grid.Column="0" />
                                        <TextBox Name="propertyTextBox" Text="{Binding Value, Mode=TwoWay}" Grid.Column="1" Width="400" TextChanged="propertyTextBox_TextChanged" />
                                    </Grid>

                                </DataTemplate>
                            </ViewModel:ParameterTemplateSelector.TextDataTemplate>

                            <ViewModel:ParameterTemplateSelector.NumberDataTemplate>
                                <DataTemplate>

                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="100"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Text="{Binding Key}" VerticalAlignment="Center" Grid.Column="0" />
                                        <TextBox Name="propertyTextBox" Text="{Binding Value, Mode=TwoWay}" Grid.Column="1" Width="400" TextChanged="propertyTextBox_TextChanged" />
                                    </Grid>

                                </DataTemplate>
                            </ViewModel:ParameterTemplateSelector.NumberDataTemplate>

                            <ViewModel:ParameterTemplateSelector.DateDataTemplate>
                                <DataTemplate>

                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="100"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Text="{Binding Key}" VerticalAlignment="Center" Grid.Column="0" />
                                        <toolkit:DatePicker  Grid.Column="1" Width="400" Value="{Binding Value, Mode=TwoWay}" ValueChanged="DatePicker_ValueChanged"/>
                                    </Grid>

                                </DataTemplate>
                            </ViewModel:ParameterTemplateSelector.DateDataTemplate>

                            <ViewModel:ParameterTemplateSelector.TimeDataTemplate>
                                <DataTemplate>

                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="100"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Text="{Binding Key}" VerticalAlignment="Center" Grid.Column="0" />
                                        <toolkit:TimePicker Grid.Column="1" Width="400" Value="{Binding Value, Mode=TwoWay}" ValueChanged="TimePicker_ValueChanged"/>
                                    </Grid>

                                </DataTemplate>
                            </ViewModel:ParameterTemplateSelector.TimeDataTemplate>

                        </ViewModel:ParameterTemplateSelector>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>

    </StackPanel>
</Grid>
public class ParameterTemplateSelector : DataTemplateSelector
{
    public DataTemplate TextDataTemplate
    {
        get;
        set;
    }

    public DataTemplate NumberDataTemplate
    {
        get;
        set;
    }

    public DataTemplate DateDataTemplate
    {
        get;
        set;
    }

    public DataTemplate TimeDataTemplate
    {
        get;
        set;
    }

    public DataTemplate PictureDataTemplate
    {
        get;
        set;
    }

    public DataTemplate NonParamDataTemplate
    {
        get;
        set;
    }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        string type = "";
        if (item is IParam)
        {
            IParam parameter = item as IParam;
            type = parameter.Type;
        }
        else if (item is KeyValue)
        {
            KeyValue k = item as KeyValue;
            type = k.Type;
        }

        switch (type)
        {
            case "String":
                return TextDataTemplate;
            case "Text":
                return TextDataTemplate;
            case "Number":
                return NumberDataTemplate;
            case "Date":
                return DateDataTemplate;
            case "Time":
                return TimeDataTemplate;
            case "Picture":
                return PictureDataTemplate;
            default:
                return TextDataTemplate;
        }

    }

}

    public abstract class DataTemplateSelector : ContentControl
{
    public virtual DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        return null;
    }

    protected override void OnContentChanged(object oldContent, object newContent)
    {
        base.OnContentChanged(oldContent, newContent);

        ContentTemplate = SelectTemplate(newContent, this);
    }
}

The exception i get is:

System.Exception occurred
  Message=Unspecified error
  StackTrace:
   at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureNative(IntPtr element, Single inWidth, Single inHeight)
   at MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureChild(UIElement child, Size layoutSlotSize)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.Controls.ScrollContentPresenter.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureNative(IntPtr element, Single inWidth, Single inHeight)
   at MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.ScrollViewer.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at Microsoft.Phone.Controls.PivotItem.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at Microsoft.Phone.Controls.Pivot.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
   at MS.Internal.XcpImports.UpdateLayoutNative(IntPtr element)
   at MS.Internal.XcpImports.UIElement_UpdateLayout(UIElement element)
   at System.Windows.UIElement.UpdateLayout()
   at Microsoft.Phone.Controls.Pivot.OnItemsChanged(NotifyCollectionChangedEventArgs e)
   at System.Windows.Controls.ItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
   at System.Windows.Controls.ItemCollection.NotifyCollectionChanged(NotifyCollectionChangedEventArgs e)
   at System.Windows.Controls.ItemCollection.UpdateItemsSourceList(IEnumerable newItemsSource)
   at System.Windows.Controls.ItemsControl.ItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
   at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
   at System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)
   at System.Windows.Data.BindingExpression.RefreshExpression()
   at System.Windows.Data.BindingExpression.SendDataToTarget()
   at System.Windows.Data.BindingExpression.SourceAcquired()
   at System.Windows.Data.BindingExpression.System.Windows.IDataContextChangedListener.OnDataContextChanged(Object sender, DataContextChangedEventArgs e)
   at System.Windows.Data.BindingExpression.DataContextChanged(Object sender, DataContextChangedEventArgs e)
   at System.Windows.FrameworkElement.OnDataContextChanged(DataContextChangedEventArgs e)
   at System.Windows.FrameworkElement.OnAncestorDataContextChanged(DataContextChangedEventArgs e)
   at System.Windows.FrameworkElement.NotifyDataContextChanged(DataContextChangedEventArgs e)
   at System.Windows.FrameworkElement.OnAncestorDataContextChanged(DataContextChangedEventArgs e)
   at System.Windows.FrameworkElement.NotifyDataContextChanged(DataContextChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyProperty dp)
   at System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
   at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
   at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)
   at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.FrameworkElement.set_DataContext(Object value)
   at WPUserControls.ViewModel.ItemsTypeViewModel.AddItem(ItemInstance itemInstance)
   at WPUserControls.ViewModel.ItemsTypePageViewModel.AddNewItemInstance()
   at WPUserControls.Views.ItemsTypePageView.AddItem()
   at WPUserControls.Views.ItemsTypePageView.addIcon_Click(Object sender, EventArgs e)
   at Microsoft.Phone.Shell.ApplicationBarItemContainer.FireEventHandler(EventHandler handler, Object sender, EventArgs args)
   at Microsoft.Phone.Shell.ApplicationBarIconButton.ClickEvent()
   at Microsoft.Phone.Shell.ApplicationBarIconButtonContainer.ClickEvent()
   at Microsoft.Phone.Shell.ApplicationBar.OnCommand(UInt32 idCommand)
   at Microsoft.Phone.Shell.Interop.NativeCallbackInteropWrapper.OnCommand(UInt32 idCommand)
解决方案

Once I installed the sdk RC, it was fixed! I guess it was an MS bug.

这篇关于wp7芒果中的DataTemplateSelector的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-01 07:14