2015-01-12 47 views
0

我试图通过为CommandParameter实际Frame对象到我施加Command的RelativeSource绑定找不到框架祖先

XAML

<Frame NavigationUIVisibility="Hidden" Source="{Binding TargetContentPage}"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="ContentRendered"> 
        <command:EventToCommand Command="{Binding ContentRendered}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Frame}}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
</Frame> 

C#

public RelayCommand<Frame> ContentRendered 
{ 
    get 
    { 
      return new RelayCommand<Frame>(frame => frame.RemoveBackEntry()); 
    } 
} 

运行时,一个NullReferenceException被提出说frame为空。 上面的代码可能有什么错误?

+0

您是否可能缺少Mode = FindAncestor? – Lennart

+0

@Clemens是的,你是对的,我错过了,请添加它作为答案请。 – AymenDaoudi

回答

3

Frame和EventToCommand之间没有祖先/后代关系。改为使用ElementName绑定:

<Frame x:Name="frame" ...> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="ContentRendered"> 
      <command:EventToCommand 
       Command="{Binding ContentRendered}" 
       CommandParameter="{Binding ElementName=frame}"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Frame>