Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
样式化WPF/Silverlight组合框_Wpf_Silverlight_Xaml_Combobox_Styling - Fatal编程技术网

样式化WPF/Silverlight组合框

样式化WPF/Silverlight组合框,wpf,silverlight,xaml,combobox,styling,Wpf,Silverlight,Xaml,Combobox,Styling,我想知道如何更改ComboBox控件的弹出部分。我不太熟悉自定义样式和模板 我有一个定义的弹出窗口,如中所示: <Popup Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}" .....> .... some content </Popup> .... 一些内容 我知道ComboBox控件有一个名为“PART_p

我想知道如何更改ComboBox控件的弹出部分。我不太熟悉自定义样式和模板

我有一个定义的弹出窗口,如中所示:

<Popup 
      Name="Popup"
      Placement="Bottom"
      IsOpen="{TemplateBinding IsDropDownOpen}"
      .....>
    .... some content
</Popup>

.... 一些内容
我知道ComboBox控件有一个名为“PART_popup”的命名弹出窗口。如何用自己的实现替换默认实现


谢谢

您可以使用加载的事件并在代码隐藏中搜索该部件来替换它,这可能不起作用,因为并非所有部件元素都是必需的。通常,您会复制现有模板并更改相关部分,您可以通过
组合框.template
属性设置模板

如果您只想设置样式,而不是显著地更改任何内容,那么也可以对弹出窗口使用隐式样式

可以在MSDN上找到默认模板:

(“默认WPF主题。”链接)

(各种子页面)

在XamlpadX中,您可以单击样式按钮并选择组合框-显示组合框的模板-将其复制到您的项目并进行实验

您还可以在此处查看controlstyle:

和控制模板示例如下:


你能举个例子吗?这将非常有帮助。就像我说的,我不知道该怎么做。谢天谢地,第一种方法是个坏主意,因为零件不一定是强制性的。你在问题中贴了一些代码,这是从哪里来的?因为如果它来自默认模板,只需复制所有模板并将其设置为
ComboBox.template
,如果要将其应用于多个组合框,则可以使用
样式.Setter
。只需编辑您想要与众不同的部分。(如果您不知道从哪里获得默认模板,我会在我的答案中添加一些链接。)