2016-04-28 6 views
2

Wenn ich den ZIndex eines Steuerelements an eine Eigenschaft anbinde, obwohl die Eigenschaft beim Debuggen eindeutig aufgerufen wird (der Haltepunkt wird vom Getter erreicht), scheint der Zindex nicht zu sein funktionieren (d. h. der zindex ändert sich in der laufenden Anwendung nicht ordnungsgemäß; die Elemente im Steuerelement sind nicht mehr anklickbar, wenn ich den zindex an eine Eigenschaft binden lasse und nicht an einen festgelegten Wert in XAML). Irgendeine Idee warum oder wie man das repariert? Danke für die Hilfe!WPF Das Binden des Zens eines Steuerelements an eine Eigenschaft funktioniert nicht

 <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

Offenbar ist diese Kontrolle Kind eines Grid und in Spalte 1, Zeilen 0-1. Wenn sich in denselben Rasterzellen keine anderen Steuerelemente befinden, hat das Festlegen von ZIndex keine Auswirkung, da es relativ zu den anderen untergeordneten Elementen des direkten übergeordneten Elements, d. H. Dem Raster, ist. – Clemens

+0

Nein, das hat nichts damit zu tun. Der zIndex hat einen Effekt, aber eine dynamische Bindung an eine Eigenschaft hat keine Auswirkungen. Wenn ich Canvas.SetZindex() für das Steuerelement aufrufen, funktioniert das. – Giallo

+0

Eigenschaft der Hauptansicht. Es wird getroffen - wenn ich einen Haltepunkt setze, stoppt es beim Start der Eigenschaft, aber der ZIndex funktioniert wie -1 - nichts ist im Grid interaktiv. – Giallo

Antwort

0

Sie können DataContext="{Binding ElementName=LaunchableApplicationControl}" versuchen und auf eine Eigenschaft binden, die ZIndex gesetzt wird. Stellen Sie sicher, dass Sie INotifyPropertyChangedinterface implementieren.

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

Danke - das ist was ich getan habe, und es bindet. Der zIndex wird festgelegt. ABER die Wirkung ist falsch. Die Elemente in diesem Steuerelement sind nicht mehr anklickbar, als ob ihr zIndex auf -1 festgelegt wurde. Einstellung über Canvas.GetZIndex ((UserControl) this.FindName ("LaunchableApplicationControl")); funktioniert absolut und hat den gewünschten Effekt. Ich habe keine Ahnung, warum sich das anders verhalten würde als an eine Eigenschaft zu binden. – Giallo

Verwandte Themen