将样式应用于自定义面板的一个子元素?

时间:2016-04-27 19:51:09

标签: wpf xaml layout win-universal-app panel

我已经自己实现了一个自定义面板(主要是处理项目的网格布局,具体取决于它们的大小和面板大小)。

我能够"导航"在项目之间(使用键盘箭头)并为其中一个提供视觉样式。

目前,我可以获得应该突出显示的UIElement,但我不知道:

  • 我如何申请一种风格?
  • 适用哪种风格?由于我不知道包含什么类型的元素,我想可能在光标周围应用一些边框

知道如何继续吗?

我还必须关注"这个元素,如果这可以帮助

2 个答案:

答案 0 :(得分:0)

UIElement类型没有样式的概念,Style是在FrameworkElement上定义的属性,它派生自UIElement并为WPF元素提供一组属性,事件和方法。

如果您可以将UIElement作为FrameworkElement投射,则可以应用这样的样式

FrameworkElement frameworkElement = uiElement as FrameworkElement;

if (frameworkElement != null)
{
    frameworkElement.Style = myStyle;
}

答案 1 :(得分:0)

您可以将自定义面板用作ListBox的ItemsPanel,例如

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

这里的想法ItemsControl: A-Z chapter I

ListBox将项目包装到ListBoxItem容器中并支持(开箱即用)选择(1个或多个项目)和所选项目突出显示(可以使用新样式进行自定义)。所有箭头键也正常工作。