2016-04-28 75 views
2

コントロールのZIndexをプロパティにバインドすると、デバッグ時にプロパティが明示的に呼び出されますが(ブレークポイントがゲッターに当てられます)、zindexは見えません(つまり、実行中のアプリケーションでzindexが適切に変更されず、XAMLの設定値ではなくプロパティにバインドされるようにzindexを設定すると、コントロールの要素はクリックできなくなります)。 理由、またはこれを修正する方法助けてくれてありがとう!WPFコントロールのzindexをプロパティにバインドできません

 <views:LaunchableApplicationControl BorderThickness="0" 
      BorderBrush="DarkSlateGray" x:Name="LaunchableApplicationControl" 
      Grid.Column="1" Margin="25,150,25,50" 
      Panel.ZIndex="{Binding LaunchableControlZIndex}" 
      Grid.Row="0" Grid.RowSpan="2" 
      DataContext="{Binding LaunchableApplication, Mode=OneWay, 
      Source={StaticResource Locator}}"/> 
+0

明らかに、コントロールはグリッドの子であり、列1、行0-1に配置されているようです。同じグリッドセルに他のコントロールがない場合、ZIndexは直接親の他の子、つまりグリッドとの相対関係にあるため、何の効果もありません。 – Clemens

+0

いいえ、それはそれとは関係ありません。 zIndexは効果がありますが、プロパティに動的にバインドするだけで効果はありません。コントロールでCanvas.SetZindex()を呼び出すと、正常に動作します。 – Giallo

+0

メインビューのプロパティ。ヒットします - ブレークポイントを設定すると、起動時にプロパティの取得で停止しますが、zIndexは-1のように実行されます。グリッド上で何も対話できません。 – Giallo

答えて

0

あなたはDataContext="{Binding ElementName=LaunchableApplicationControl}"を試してみて、ZIndexを設定しますプロパティにバインドすることができます。 INotifyPropertyChangedinterfaceを実装してください。

 private int _Zindex; 
     public int Zindex 
     { 
      get { return _Zindex; } 
      set 
      { 
       if (_Zindex == value) 
       { 
        return; 
       } 
       _Zindex = value; 
       NotifyPropertyChanged("Zindex"); 
      } 
     } 
+0

ありがとうございます - これは私がやったことであり、バインドしています。 zIndexが設定されます。しかし、その効果は間違っています。そのコントロールの要素は、zIndexが-1に設定されているかのように、クリックできなくなりました。 Canvas.GetZIndex((UserControl)this.FindName( "LaunchableApplicationControl"))を介して設定します。絶対に動作し、望ましい効果があります。なぜ私はそれがプロパティへのバインディングとは異なった振る舞いをするのか分かりません。 – Giallo

関連する問題