2011-07-26 2 views
3

WPF 4.0에서 InvokeCommandAction (Blend 4 SDK)을 삽입 할 때 문제가 있습니다. usercontrol이 표시되지 않고 몇 가지 예외가 있습니다. (하단에 로그온) 내 xaml 코드에 줄이 없어도 문제는 없습니다 (그러나 이벤트 트리거는 없습니다).WPF 4.0 InvokeCommandAction 호환성 (System.Windows.Interactivity)

외부 조명 프로젝트에서이 코드 부분을 테스트했으며 완벽하게 작동했습니다 !! InvokeCommandAction이 may 앱에서 무언가와 호환되지 않을 수 있습니다.하지만 무엇입니까?

<UserControl x:Class="Project.Views.Menu.TestView" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
      xmlns:Menu="clr-namespace:Project.ViewModels.Menu" 
      mc:Ignorable="d" 
      x:Name="test" 
      d:DesignHeight="300" d:DesignWidth="300"> 

    <UserControl.DataContext> 
     <Menu:TestViewModel /> 
    </UserControl.DataContext> 
    <Grid> 
     <ListBox x:Name="listBox" Width="200" 
        MaxHeight="128" SelectionMode="Single" Margin="0"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="SelectionChanged"> 
        <i:InvokeCommandAction Command="{Binding TestCommand, Mode=OneWay}" CommandParameter="{Binding SelectedItem, ElementName=listBox}"/> 
       </i:EventTrigger> 
      </i:Interaction.Triggers>  
      <ListBoxItem>blabla1</ListBoxItem> 
      <ListBoxItem>blabla2</ListBoxItem> 
      <ListBoxItem>blabla3</ListBoxItem> 
      <ListBoxItem>blabla4</ListBoxItem> 
     </ListBox> 
    </Grid> 
</UserControl> 

그 오류를 기록했지만, 이해가 안 :

 <i:Interaction.Triggers> 
      <i:EventTrigger EventName="SelectionChanged"> 
       <i:InvokeCommandAction Command="{Binding DataContext.TestCommand, ElementName=test}" CommandParameter="{Binding SelectedItem, ElementName=listBox}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 

희망 아니에요 :

 

ERROR 2011-07-26 15:18:47 – La référence d'objet n'est pas définie à une instance d'un objet. 
PresentationFramework 
    à System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector) 
    à System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 
    à System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
    à System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 
    à System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) 
    à Project.Views.Menu.TestView.InitializeComponent() dans C:\Project\Views\Menu\TestView.xaml:ligne 1 
    à Project.Views.Menu.TestView..ctor() dans C:\Project\Views\Menu\TestView.xaml.cs:ligne 24 
    à Project.ViewModels.MainWindowsViewModel..ctor() dans C:\Project\ViewModels\MainWindowsViewModel.cs:ligne 52 

ERROR 2011-07-26 15:18:47 – Une exception a été levée par la cible d'un appel. 
mscorlib 
    à System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
    à System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 
    à System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 
    à System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    à System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    à System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    à System.Xaml.Schema.XamlTypeInvoker.CreateInstance(Object[] arguments) 
    à MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstanceWithCtor(XamlType xamlType, Object[] args) 
    à MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(XamlType xamlType, Object[] args) 
    à System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(ObjectWriterContext ctx) 
    à System.Xaml.XamlObjectWriter.WriteEndObject() 
    à System.Xaml.XamlWriter.WriteNode(XamlReader reader) 
    à System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector) 
    à System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 
    à System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
    à System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 
    à System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) 
    à Project.MainWindow.InitializeComponent() dans C:\Project\MainWindow.xaml:ligne 1 
    à Project.MainWindow..ctor() dans C:\Project\MainWindow.xaml.cs:ligne 17 


ERROR 2011-07-26 15:18:47 – Une exception a été levée par la cible d'un appel. 
mscorlib 
    à System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
    à System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 
    à System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 
    à System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    à System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    à System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    à System.Xaml.Schema.XamlTypeInvoker.CreateInstance(Object[] arguments) 
    à MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstanceWithCtor(XamlType xamlType, Object[] args) 
    à MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(XamlType xamlType, Object[] args) 
    à System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(ObjectWriterContext ctx) 
    à System.Xaml.XamlObjectWriter.WriteStartMember(XamlMember property) 
    à System.Xaml.XamlWriter.WriteNode(XamlReader reader) 
    à System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector) 
    à System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 
    à System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
    à System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 
    à System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc) 
    à System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties) 
    à System.Windows.Application.DoStartup() 
    à System.Windows.Application.b__1(Object unused) 
    à System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 
    à MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 

답변

8

귀하의 InteractionTrigger 더 같이한다 너무 늦음 =)