Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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/7/jsf/5.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
C# 如何在WPF中向分隔符添加标题?_C#_Wpf_Xaml_Header_Separator - Fatal编程技术网

C# 如何在WPF中向分隔符添加标题?

C# 如何在WPF中向分隔符添加标题?,c#,wpf,xaml,header,separator,C#,Wpf,Xaml,Header,Separator,我想在WPF分隔符中添加一个标题(使其看起来像GroupBox的顶行)。这样做的目的是将视图分成不同的部分,我不能使用GroupBox,因为我们业务中的指导原则说,我们必须使用分隔符来实现这一点。。。有人知道怎么做吗 编辑: 我知道可以通过使用其他控件(即borders和textbox)来实现此解决方案,但我想知道的是,是否可以将Header属性添加到Separator对象 试试这样的方法: <Grid Height="20"> <Grid.ColumnDefin

我想在WPF分隔符中添加一个标题(使其看起来像GroupBox的顶行)。这样做的目的是将视图分成不同的部分,我不能使用GroupBox,因为我们业务中的指导原则说,我们必须使用分隔符来实现这一点。。。有人知道怎么做吗

编辑:


我知道可以通过使用其他控件(即borders和textbox)来实现此解决方案,但我想知道的是,是否可以将Header属性添加到Separator对象

试试这样的方法:

  <Grid Height="20">
     <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
     </Grid.ColumnDefinitions>
     <Separator
        Width="20"
        VerticalAlignment="Center"/>
     <TextBlock
        Grid.Column="1"
        HorizontalAlignment="Center"
        Margin="4, 0"
        Text="My Header"/>
     <Separator
        Grid.Column="2"
        VerticalAlignment="Center"/>
  </Grid>

您可以编写自己的自定义控件

public class HeaderedSeparator : Control
{
    public static DependencyProperty HeaderProperty =
        DependencyProperty.Register(
        "Header",
        typeof(string),
        typeof(HeaderedSeparator));

    public string Header
    {
        get { return (string)GetValue(HeaderProperty); }
        set { SetValue(HeaderProperty, value); }
    }
}
风格:

<Style TargetType="{x:Type local:HeaderedSeparator}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:HeaderedSeparator}">
                <Grid Height="{TemplateBinding Height}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="15"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>
                    <Separator Grid.Column="0"/>
                    <TextBlock Grid.Column="1" 
                        VerticalAlignment="Center" Margin="5 0" 
                        Text="{TemplateBinding Header}"/>
                    <Separator Grid.Column="2" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后使用它:

<local:HeaderedSeparator Header="Header1"/>
<local:HeaderedSeparator Header="Header2"/>


这很有效,但我想知道是否有东西真的使用了分隔符对象,因此,它将与其他应用程序中的其他分隔符具有相同的外观,而不必映射完全相同的颜色、宽度和所有内容。@Carl:您可以将其用作
标题内容控件的控制模板,以代替
分隔符
对象。@SixlettVariables:是的,我知道我可以这样做,但是如果可能的话,我想给一个真正的分隔符添加一个标题,这样我就不必改变所有的边框样式,使其看起来像一个分隔符。也许这是不可能的,在这种情况下,我只使用这个解决方案,但如果可能的话,我更愿意使用它。@Carl-它们现在是分离器;)哈哈,我真不敢相信我没有想到这一点(我现在感觉有点傻:P)。无论如何,谢谢你,效果很好!谢谢,这就是我想要的:)