背景:
对于我的 Windows Phone 应用程序,我创建了一个名为 CharacterPresenter 的 UserControl(简称为 CP)。这是一个带有边框控件的小矩形,我可以在 PhoneAccentBrush 和透明之间切换,以便用户可以看到它何时被选中。
我创建了第二个名为 MultiCharacterPresenter (MCP) 的 UserControl。这包含一个水平方向的 StackPanel,用于在单行上显示多个 CP 控件。这也有一个边框控件,因此用户可以看到何时选择了整行。
请注意,任何时候只能选择一个*Presenter,并且所有BorderThickness="6"。
要求:
我不能有一个 12 像素。每个 CP 之间的间隙(由透明边框引起),所以我设置了 Border Margin="-6,-6,-6,-6"。这将边框置于 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 中(未以编程方式添加)。
有任何想法吗?