gpt4 book ai didi

silverlight - Silverlight 4、MVVM 和 ItemsControl Z 索引

转载 作者:行者123 更新时间:2023-12-03 10:18:36 26 4
gpt4 key购买 nike

我正在创建一个启用拖放功能的应用程序,并且我一直在尝试使用 ItemsControl 进行绑定(bind),而不是默认添加我的控件。 Displayer 是一个 UserControl,它代表我正在使用的对象。

ZExtender 具有 ZIndex、Top、Left 等属性。下面的实现适用于顶部,左侧,宽度正确,但 ZIndex 更改不生效。我想在代码中绑定(bind)或更改 ZIndex 以在 UI 中自动更改它。如果不向我页面的 codeBehind 发送消息,这可能吗?

  <Border BorderBrush="Black" BorderThickness="2" Margin="35" HorizontalAlignment="Center" VerticalAlignment="Center">
<Canvas AutomationProperties.AutomationId="designerCanvas" Width="{Binding Root.Width}" Height="{Binding Root.Height}">
<Canvas.Background>
<ImageBrush ImageSource="/SilverlightImages/canvasBackground.png" Stretch="None" />
</Canvas.Background>
<ItemsControl ItemsSource="{Binding Containers}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<canvas> <!-- canvas is needed for the positioning to work -->
<controls:Displayer DataContext="{Binding ZExtender}"
Canvas.Top="{Binding Top}"
Canvas.Left="{Binding Left}"
Canvas.ZIndex="{Binding ZIndex}"
Width="{Binding WidthInPixels}"
Height="{Binding HeightInPixels}"
/>
</canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
</Border>

最佳答案

我很惊讶顶部/左侧属性的工作。 Canvas 查看 Top/Left/ZIndex 附加属性的直接子级。给定一个非 UIElement 对象,Canvas 会将项目包装在 ContentPresenter 中(它成为 Canvas 的直接子级)。因此 Canvas 将查看 ContentPresenter,而不是您的 ZExtender 或 Displayer 控件。

Displayer 控件将被创建并添加为 ContentPresenter 的子项。但这与 Canvas 无关。

通常,您需要执行以下操作:

<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="Canvas.Top" Value="{Binding Top}" />
<Setter Property="Canvas.ZIndex" Value="{Binding ZIndex}" />
</Style>
</ItemsControl.ItemContainerStyle>

但是 Silverlight 4 不支持这样的 Setter 绑定(bind)。所以你必须在后面的代码中应用绑定(bind)。最好在 PrepareContainerForItemOverride .

或者您可以尝试 here 中描述的解决方法.

关于silverlight - Silverlight 4、MVVM 和 ItemsControl Z 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6297538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com