【发布时间】:2013-03-20 13:10:34
【问题描述】:
背景:
对于我的 Windows Phone 应用程序,我创建了一个名为 CharacterPresenter 的 UserControl(简称为 CP)。这是一个带有边框控件的小矩形,我可以在 PhoneAccentBrush 和透明之间切换,以便用户可以看到它何时被选中。
我创建了第二个用户控件,称为 MultiCharacterPresenter (MCP)。这包含一个水平方向的 StackPanel,用于在单行上显示多个 CP 控件。这也有一个边框控件,因此用户可以看到何时选择了整行。
请注意,任何时候只能选择一个*Presenter,并且所有BorderThickness="6"。
要求:
我不能有 12 像素。每个 CP 之间的间隙(由透明边框引起),所以我设置了 Border Margin="-6,-6,-6,-6"。这会将 Border 置于 CP UserControl 边界的矩形之外,并允许 CP 控件在 MCP 内形成一条连续的线。
So then, when a CP is selected, the Border overlaps the neighbouring CP controls.这很好,因为选定的 CP 具有用户的焦点,因此其他 CP 控件可能被部分遮挡是可以的。
问题:
问题是每个 CP 的 Border 右侧在下一个 CP 的右侧。只有最右边的 CP 显示完整的边框。我希望在选择 CP 但部分隐藏时显示整个边框。
无解:
我尝试将所有边框控件的 Canvas.ZIndex 设置为 1(而所有其他内容的默认值为零),这应该将边框控件置于其他所有内容之上......但这没有用。我不知道为什么。
如果有所作为,我将根据数据将 CP 控件一一添加到代码中的 MCP。因此,也许 ZIndex 仅在所有控件同时呈现时才有效,例如如果它们已经存在于 XAML 中(未以编程方式添加)。
有什么想法吗?
【问题讨论】: