2016-04-28 4 views
2

Если я привязываю ZIndex элемента управления к свойству, хотя свойство явно вызывается, когда я отлаживаю (точка останова попадает на геттер), zindex не кажется (т. е. zindex не изменяется в запущенном приложении должным образом, элементы в элементе управления больше не доступны для кликов, если я устанавливаю zindex для привязки к свойству, а не к установленному значению в XAML). Любая идея, почему, или как это исправить? Спасибо за помощь!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 DOES имеет эффект, но привязка его динамически к свойству просто не имеет никакого эффекта. Если я назову Canvas.SetZindex() на элементе управления, это сработает. – Giallo

+0

Недвижимость основного вида. Он получает удар - если я устанавливаю точку останова, он останавливается при получении свойства при запуске, но функция zIndex fuctionally выполняет, как будто -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

Смежные вопросы