2016-04-27 32 views
1

我已经制作了自己的自定义面板(主要处理项目的网格布局,取决于它们的大小和面板大小)。将样式应用于自定义面板的一个子元素?

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

目前我能得到应强调UIElement,但我不知道:

  • 我如何应用样式?
  • 要应用哪种风格?由于我不知道包含什么样的元素,所以我想也许在光标周围应用一些边框

任何想法如何进行?

我也会有以“专注”这个元素,如果这能帮助

+0

您可以使用该自定义面板作为ListBox的ItemsPanel。 ListBox允许选择一个或多个元素(为每个数据项目创建一个ItemContainer(ListBoxItem)),因此您可以自定义选定的ListBoxItem风格 – ASh

+0

@ASh这似乎是一个好主意!你在哪里处理键盘按键?你应该回答你的建议 – J4N

回答

0

的UIElement类型不具有的风格理念,风格是FrameworkElement的定义的属性,其自UIElement派生,并提供了一个一组WPF元素的属性,事件和方法。

如果你能投你的UIElement的FrameworkElement的,你可以应用该样式这样

FrameworkElement frameworkElement = uiElement as FrameworkElement; 

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

好的,我可以做,但是应用什么风格?既然我只知道这是一个FrameworkElement?我不知道它周围的财产 – J4N

+0

如果你想手动应用一个样式,你将不得不知道你的样式,否则整个想法是没有意义的。您可以获取元素的类型并使用它来查找以该类型为目标的样式。 –

0

可以使用自定义面板作为ItemsPanel的列表框,例如

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

这里找到ItemsControl: A-Z chapter I

ListBox的包装物品进入ListBoxItem的容器和支持(在箱子外面)选择(1个或多个项目),选择的项目亮点(可以用一种新的风格进行定制)的想法。所有的箭头键也工作。

+0

我会尝试,但我不确定箭头键如何与网格布局一起工作(这意味着上下应该更改行,左右应该改变列) – J4N

相关问题