2017-11-28 5 views
0

コンテキストメニューのUpDownコントロールと "FileExplorerControl"というカスタムコントロール(ただし、任意のコントロールでシミュレートできます)との間にバインドを作成します。プログラムを開いてコンテキストメニューを開くと、UpDownは空です。数字を入力すると、何らかのエフェクトが発生します。参照してバインディングのソースを見つけることができません 'のElementName = LeftFileExplorer':? System.Windows.Dataエラー:4の問題は、/WPFの他のコントローラのフォントサイズへのバインド

<view:FileExplorerControl Grid.Column="0" 
            Padding="5" 
            x:Name="LeftFileExplorer" 
            DataContext= 
       "{Binding LeftFileExplorerViewModel}"> 
       <view:FileExplorerControl.ContextMenu> 
        <ContextMenu> 
         <StackPanel> 
          <TextBlock>Font Size</TextBlock> 
          <xctk:IntegerUpDown Value="{Binding 
             ElementName=LeftFileExplorer, 
           Path=FontSize, Mode=TwoWay}" 
               Minimum="8" 
               Maximum="32"/> 
         </StackPanel> 
        </ContextMenu> 
       </view:FileExplorerControl.ContextMenu> 
     </view:FileExplorerControl> 

デバッグウィンドウでのエラーメッセージはどこにあります。 BindingExpression:Path = FontSize; DataItem = null;ターゲット要素は 'IntegerUpDown'(Name = '');ターゲットのプロパティが '値'(タイプ 'Nullable`1')

+0

System.Windows.Dataエラー:4: 'ElementName = LeftFileExplorer'という参照でバインド元が見つかりません。 BindingExpression:Path = FontSize; DataItem = null;ターゲット要素は 'IntegerUpDown'(Name = '');ターゲットプロパティは 'Value'(タイプ 'Nullable'1')です。 – Patrik

答えて

0

問題は、コンテキストメニューがメインビジュアルツリーにないため、ElementNameは機能しません。コンテクストメニューは、小さな、親のない、身体的でない視覚的な木です。

ビジュアルツリーへのリンクはContextMenuPlacementTargetプロパティです。メニューがポップアップすると、PlacementTargetがコンテキストメニューを所有するコントロールになります。この場合、それはview:FileExplorerControlです。便利なのは、それがあなたが望むものです。

RelativeSourceを使用してContextMenuを取得し、PlacementTargetプロパティを使用してFileExplorerControlを取得します。

関連する問題