#c# #wpf #data-binding #z-index #itemscontrol
Вопрос:
У меня есть холст внутри пользовательского элемента управления. Внутри холста у меня есть изображение и элемент управления. например: .. /gt; Элемент управления элементами выглядит следующим образом:
lt;ItemsControl x:Name="itmZoneShapes" ItemsSource="{Binding LastSelectedZone.PredefinedSelectedLogicalZones}"gt; lt;ItemsControl.ItemsPanelgt; lt;ItemsPanelTemplategt; lt;Canvas/gt; lt;/ItemsPanelTemplategt; lt;/ItemsControl.ItemsPanelgt; lt;ItemsControl.ItemContainerStylegt; lt;Style TargetType="ContentPresenter"gt; lt;Setter Property="Canvas.Left" Value="{Binding Path=RectangleCanvasLeft}" /gt; lt;Setter Property="Canvas.Top" Value="{Binding Path=RectangleCanvasTop}" /gt; lt;Setter Property="Panel.ZIndex" Value="{Binding Path=RectangleCanvasZIndex}" /gt; lt;/Stylegt; lt;/ItemsControl.ItemContainerStylegt; lt;ItemsControl.ItemTemplategt; lt;DataTemplategt; lt;Rectangle StrokeThickness="2" Stroke="Black" Tag="{Binding Path=RectangleName}" Width="{Binding Path=RectangleWidth}" Height="{Binding Path=RectangleHeight}" RadiusX="{Binding Path=RectangleRadiusX}" RadiusY="{Binding Path=RectangleRadiusY}"gt; lt;Rectangle.Fillgt; lt;SolidColorBrush Color="{Binding Path=RectangleBackgroundColor, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Opacity="0.4"/gt; lt;/Rectangle.Fillgt; lt;Rectangle.Clipgt; lt;RectangleGeometry Rect="{Binding Path=RectangleClip}"/gt; lt;/Rectangle.Clipgt; lt;/Rectanglegt; lt;/DataTemplategt; lt;/ItemsControl.ItemTemplategt; lt;/ItemsControlgt;
Проблема в том, что привязанная панель.zIndex каким-то образом работает только на холсте из тега ItemsPanelTemplate.
Чего я хочу, так это иметь возможность устанавливать панель.zIndex для каждого элемента внутри элемента управления и показать прямоугольник над изображением или под изображением ( на основе панели.Зиндекс ). Прямо сейчас я могу изменить только панель управления элементами.zIndex но проблема в том, что все элементы в шаблоне данных будут иметь один и тот же zIndex.
Есть ли возможность привязать панель.zIndex для каждого элемента в ItemsControl и правильно отображаться в пользовательском интерфейсе ?
Комментарии:
1. » Панель. zIndex каким — то образом работает только на холсте из тега ItemsPanelTemplate» — именно так он должен работать. zIndex влияет только на прямую родительскую панель элемента, а не на любую другую возможную панель в визуальном дереве. Отображение некоторых элементов выше и некоторых ниже элемента пользовательского интерфейса вне визуального дерева ItemsControl невозможно. Вам нужно будет иметь два элемента управления.
2. «проблема в том, что все элементы в шаблоне данных будут иметь один и тот же zIndex».. Тогда почему бы вам не обернуть содержимое таблички данных в сетку? На самом деле не совсем ясно, чего ты хочешь.