2012-10-23 27 views
0

沒有發現我已經在我的XAML以下文本菜單:的RelativeSource屬性上的ContextMenu

<ContextMenu ItemsSource="{Binding RSPContextMenuCommands}"> 
         <ContextMenu.ItemContainerStyle> 
          <Style TargetType="{x:Type MenuItem}"> 
           <Setter Property="CommandParameter" Value="{Binding}" /> 
           <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=DataContext.ShowASPCommand}" /> 
           <Style.Triggers>       
            </DataTrigger> 
            <DataTrigger Binding="{Binding SpName}" Value="ASP"> 
             <Setter Property="Header" Value="Show Additional Service Providers" /> 
             <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=DataContext.TransferCommand}" /> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </ContextMenu.ItemContainerStyle> 
         <ContextMenu.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal"> 
            <TextBlock Margin="5,0,0,0" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=PhoneNumber, PresentationTraceSources.TraceLevel=High}" /> 
           </StackPanel> 
          </DataTemplate> 
         </ContextMenu.ItemTemplate> 
        </ContextMenu> 

其中,RSPContextMenuCommands是類型附表(類)的集合。附表有電話號碼它的財產。 TransferCommand與聲明RSPContextMenuCommands的級別相同。我得到ShowASPCommand和TransferCommand,但不是PhoneNumber。我嘗試了各種RelativeSource組合,但它沒有奏效。什麼應該是適當的RelativeSource它。也試過RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PhoneNumber

+0

爲TransferCommand定義RelativeSource後,我的綁定級別位於聲明RSPContextMenuCommands的類中。我想再次進入RSPContextMenuCommands。 plz幫助我。 – deathrace

回答

0

解決方法。我移動了ItemTemplate以上ItemContainerStyle

<ContextMenu ItemsSource="{Binding RSPContextMenuCommands}"> 
         <ContextMenu.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal"> 
            <TextBlock Text="{Binding PhoneNumber}" /> 
           </StackPanel> 
          </DataTemplate> 
         </ContextMenu.ItemTemplate> 
         <ContextMenu.ItemContainerStyle> 
          <Style TargetType="{x:Type MenuItem}"> 
           Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=DataContext.ShowASPCommand, PresentationTraceSources.TraceLevel=High}" /> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding SpName}" Value="ASP"> 
            <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=DataContext.TransferCommand}" /> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </ContextMenu.ItemContainerStyle> 
        </ContextMenu> 

但還是如果anyboday可以提供適當的我的文檔的RelativeSource方法。我真的很感激。 :-)

相關問題