Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 装订不';似乎无法在自定义数据模板(扩展器)中工作_C#_Wpf_Xaml_Binding_Datatemplate - Fatal编程技术网

C# 装订不';似乎无法在自定义数据模板(扩展器)中工作

C# 装订不';似乎无法在自定义数据模板(扩展器)中工作,c#,wpf,xaml,binding,datatemplate,C#,Wpf,Xaml,Binding,Datatemplate,概述 我正在尝试创建一个自定义扩展器,其中包含一个可视化树,用户可以在其中选择或取消选择节点。但这棵树现在并不重要。重要的是我必须覆盖的标题,以便显示用户需要的所有信息 问题 <UserControl x:Class="WPF_Test_project.CheckableTree" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="htt

概述

我正在尝试创建一个自定义扩展器,其中包含一个可视化树,用户可以在其中选择或取消选择节点。但这棵树现在并不重要。重要的是我必须覆盖的标题,以便显示用户需要的所有信息

问题

<UserControl x:Class="WPF_Test_project.CheckableTree"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             >
    <Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButton">
                    <Path Name="Chevron"
                          HorizontalAlignment="Center"
                          VerticalAlignment="Center"
                          Data="M 0 0 L 10 10 L 20 0 Z"
                          Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Foreground}"
                          />

                    <!-- Change appearance when is expanded -->
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="true">
                            <Setter TargetName="Chevron" Property="Data" Value="M 0 10 L 10 0 L 20 10 Z" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>

                <Style x:Key="MainViewExpander" TargetType="Expander">
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Expander">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Name="ContentRow" Height="0" />
                                    </Grid.RowDefinitions>
                                    <Border Name="HeaderBorder"
                                            Grid.Row="0"
                                            BorderThickness="0"
                                            Background="#FFE1E1E1"
                                            >
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="Auto" />
                                                <ColumnDefinition Width="20" />
                                            </Grid.ColumnDefinitions>

                                            <ContentPresenter
                                                Grid.Column="0"
                                                Margin="0"
                                                ContentSource="Header"
                                                RecognizesAccessKey="True" 
                                                />

                                            <ToggleButton
                                                Grid.Column="2"
                                                Margin="4 4 8 4"
                                                IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                                                OverridesDefaultStyle="True"
                                                Template="{StaticResource ExpanderToggleButton}"
                                                Background="Black"
                                                />

                                        </Grid>
                                    </Border>

                                    <Border Name="ContentBorder" Grid.Row="1" BorderThickness="0">
                                        <ContentPresenter Margin="0" />
                                    </Border>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsExpanded" Value="True">
                                        <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content, Path=DesiredHeight}" />
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>

                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>

                                    <CheckBox Grid.Column="0" 
                                              Margin="4" 
                                              />

                                    <TextBlock Grid.Column="1"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=Header, FallbackValue=Header}"
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               />

                                    <TextBlock Grid.Column="2"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=NrOfFeaturesSelected, FallbackValue=5}" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                    <TextBlock Grid.Column="3"
                                               Margin="2"
                                               Text="/" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                    <TextBlock Grid.Column="4"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=NrOfFeaturesAvailable, FallbackValue=5}" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                </Grid>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

                <Style x:Key="TreeViewItemStyle" TargetType="TreeViewItem">
                    <Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>

            </ResourceDictionary>
        </Grid.Resources>

        <Expander IsExpanded="True" Style="{StaticResource MainViewExpander}">
            <TreeView ItemsSource="{Binding ElementName=CT, Path=Items}"
                      BorderThickness="0"
                      ItemContainerStyle="{StaticResource TreeViewItemStyle}"
                      Padding="4"
                      >
                <TreeView.Resources>
                    <HierarchicalDataTemplate
                        x:Key="CheckableTreeItemTemplate"
                        ItemsSource="{Binding ElementName=CT, Path=Items}"
                        >

                        <Grid HorizontalAlignment="Stretch">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

                            <CheckBox Grid.Column="0"
                                      IsChecked="{Binding IsChecked}"
                                      VerticalAlignment="Center"
                                      Visibility="{Binding IsCheckable, Converter={StaticResource BooleanToVisibilityConverter}}"
                            />

                            <Label Grid.Column="1" 
                                   Content="{Binding Title}" 
                                   HorizontalAlignment="Left" 
                                   VerticalAlignment="Center"
                            />

                            <Label Grid.Column="3" 
                                   Content="{Binding TagCountDisplayValue}" 
                                   HorizontalAlignment="Right" 
                                   VerticalAlignment="Center" 
                                   Visibility="{Binding ShowTagCountDisplayValue, Converter={StaticResource BooleanToVisibilityConverter}}"
                            />

                        </Grid>
                    </HierarchicalDataTemplate>
                </TreeView.Resources>
            </TreeView>
        </Expander>
    </Grid>
</UserControl>
        <local:CheckableTree Header="Test" NrOfFeaturesSelected="9">

        </local:CheckableTree>
不知何故,DataTemplate中文本框的绑定根本不起作用。无论我输入什么,字段总是空的,DependencyProperty的setter不会被调用

代码

<UserControl x:Class="WPF_Test_project.CheckableTree"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             >
    <Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButton">
                    <Path Name="Chevron"
                          HorizontalAlignment="Center"
                          VerticalAlignment="Center"
                          Data="M 0 0 L 10 10 L 20 0 Z"
                          Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Foreground}"
                          />

                    <!-- Change appearance when is expanded -->
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="true">
                            <Setter TargetName="Chevron" Property="Data" Value="M 0 10 L 10 0 L 20 10 Z" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>

                <Style x:Key="MainViewExpander" TargetType="Expander">
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Expander">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Name="ContentRow" Height="0" />
                                    </Grid.RowDefinitions>
                                    <Border Name="HeaderBorder"
                                            Grid.Row="0"
                                            BorderThickness="0"
                                            Background="#FFE1E1E1"
                                            >
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="Auto" />
                                                <ColumnDefinition Width="20" />
                                            </Grid.ColumnDefinitions>

                                            <ContentPresenter
                                                Grid.Column="0"
                                                Margin="0"
                                                ContentSource="Header"
                                                RecognizesAccessKey="True" 
                                                />

                                            <ToggleButton
                                                Grid.Column="2"
                                                Margin="4 4 8 4"
                                                IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                                                OverridesDefaultStyle="True"
                                                Template="{StaticResource ExpanderToggleButton}"
                                                Background="Black"
                                                />

                                        </Grid>
                                    </Border>

                                    <Border Name="ContentBorder" Grid.Row="1" BorderThickness="0">
                                        <ContentPresenter Margin="0" />
                                    </Border>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsExpanded" Value="True">
                                        <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content, Path=DesiredHeight}" />
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>

                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>

                                    <CheckBox Grid.Column="0" 
                                              Margin="4" 
                                              />

                                    <TextBlock Grid.Column="1"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=Header, FallbackValue=Header}"
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               />

                                    <TextBlock Grid.Column="2"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=NrOfFeaturesSelected, FallbackValue=5}" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                    <TextBlock Grid.Column="3"
                                               Margin="2"
                                               Text="/" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                    <TextBlock Grid.Column="4"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=NrOfFeaturesAvailable, FallbackValue=5}" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                </Grid>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

                <Style x:Key="TreeViewItemStyle" TargetType="TreeViewItem">
                    <Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>

            </ResourceDictionary>
        </Grid.Resources>

        <Expander IsExpanded="True" Style="{StaticResource MainViewExpander}">
            <TreeView ItemsSource="{Binding ElementName=CT, Path=Items}"
                      BorderThickness="0"
                      ItemContainerStyle="{StaticResource TreeViewItemStyle}"
                      Padding="4"
                      >
                <TreeView.Resources>
                    <HierarchicalDataTemplate
                        x:Key="CheckableTreeItemTemplate"
                        ItemsSource="{Binding ElementName=CT, Path=Items}"
                        >

                        <Grid HorizontalAlignment="Stretch">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

                            <CheckBox Grid.Column="0"
                                      IsChecked="{Binding IsChecked}"
                                      VerticalAlignment="Center"
                                      Visibility="{Binding IsCheckable, Converter={StaticResource BooleanToVisibilityConverter}}"
                            />

                            <Label Grid.Column="1" 
                                   Content="{Binding Title}" 
                                   HorizontalAlignment="Left" 
                                   VerticalAlignment="Center"
                            />

                            <Label Grid.Column="3" 
                                   Content="{Binding TagCountDisplayValue}" 
                                   HorizontalAlignment="Right" 
                                   VerticalAlignment="Center" 
                                   Visibility="{Binding ShowTagCountDisplayValue, Converter={StaticResource BooleanToVisibilityConverter}}"
                            />

                        </Grid>
                    </HierarchicalDataTemplate>
                </TreeView.Resources>
            </TreeView>
        </Expander>
    </Grid>
</UserControl>
        <local:CheckableTree Header="Test" NrOfFeaturesSelected="9">

        </local:CheckableTree>

阶级

使用系统;
使用System.Collections.Generic;
使用System.Windows;
使用System.Windows.Controls;
命名空间WPF_测试_项目
{
/// 
///CheckableTree.xaml的交互逻辑
/// 
公共部分类CheckableTree:UserControl
{
公共可检查树()
{
初始化组件();
}
已选择公共int nOffatures
{
获取{return(int)GetValue(nRoffeatureSelectedProperty);}
set{SetValue(nRoffeatureSelectedProperty,value);}
}
公共静态只读从属属性nOffertureSelectedProperty=
DependencyProperty.Register(“nOffertureSelected”、typeof(Int32)、typeof(CheckableTree)、new UIPropertyMetadata(null));
公共设施可用
{
获取{return(int)GetValue(nRoffeatureSelectedProperty);}
set{SetValue(nRoffeatureSelectedProperty,value);}
}
公共静态只读从属属性nOffaturesAvailableProperty=
DependencyProperty.Register(“nOfferturesAvailable”、typeof(Int32)、typeof(CheckableTree)、new UIPropertyMetadata(null));
公共数字项目
{
get{return(IEnumerable)GetValue(ItemsProperty);}
set{SetValue(nRoffeatureSelectedProperty,value);}
}
公共静态只读从属属性ItemsProperty=
Register(“Items”、typeof(IEnumerable)、typeof(CheckableTree)、new-UIPropertyMetadata(null));
公共字符串头
{
get{return(string)GetValue(HeaderProperty);}
set{SetValue(HeaderProperty,value);}
}
公共静态只读从属属性HeaderProperty=
Register(“Header”、typeof(string)、typeof(CheckableTree)、newUIPropertyMetadata(null));
}
}
用法

<UserControl x:Class="WPF_Test_project.CheckableTree"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             >
    <Grid>
        <Grid.Resources>
            <ResourceDictionary>
                <ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButton">
                    <Path Name="Chevron"
                          HorizontalAlignment="Center"
                          VerticalAlignment="Center"
                          Data="M 0 0 L 10 10 L 20 0 Z"
                          Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Foreground}"
                          />

                    <!-- Change appearance when is expanded -->
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="true">
                            <Setter TargetName="Chevron" Property="Data" Value="M 0 10 L 10 0 L 20 10 Z" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>

                <Style x:Key="MainViewExpander" TargetType="Expander">
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Expander">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Name="ContentRow" Height="0" />
                                    </Grid.RowDefinitions>
                                    <Border Name="HeaderBorder"
                                            Grid.Row="0"
                                            BorderThickness="0"
                                            Background="#FFE1E1E1"
                                            >
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*" />
                                                <ColumnDefinition Width="Auto" />
                                                <ColumnDefinition Width="20" />
                                            </Grid.ColumnDefinitions>

                                            <ContentPresenter
                                                Grid.Column="0"
                                                Margin="0"
                                                ContentSource="Header"
                                                RecognizesAccessKey="True" 
                                                />

                                            <ToggleButton
                                                Grid.Column="2"
                                                Margin="4 4 8 4"
                                                IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                                                OverridesDefaultStyle="True"
                                                Template="{StaticResource ExpanderToggleButton}"
                                                Background="Black"
                                                />

                                        </Grid>
                                    </Border>

                                    <Border Name="ContentBorder" Grid.Row="1" BorderThickness="0">
                                        <ContentPresenter Margin="0" />
                                    </Border>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsExpanded" Value="True">
                                        <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content, Path=DesiredHeight}" />
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>

                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>

                                    <CheckBox Grid.Column="0" 
                                              Margin="4" 
                                              />

                                    <TextBlock Grid.Column="1"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=Header, FallbackValue=Header}"
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               />

                                    <TextBlock Grid.Column="2"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=NrOfFeaturesSelected, FallbackValue=5}" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                    <TextBlock Grid.Column="3"
                                               Margin="2"
                                               Text="/" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                    <TextBlock Grid.Column="4"
                                               Margin="2"
                                               Text="{Binding ElementName=CT, Path=NrOfFeaturesAvailable, FallbackValue=5}" 
                                               Foreground="Black"
                                               FontWeight="Bold"
                                               FontSize="14" 
                                               HorizontalAlignment="Right"
                                               />

                                </Grid>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

                <Style x:Key="TreeViewItemStyle" TargetType="TreeViewItem">
                    <Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>

            </ResourceDictionary>
        </Grid.Resources>

        <Expander IsExpanded="True" Style="{StaticResource MainViewExpander}">
            <TreeView ItemsSource="{Binding ElementName=CT, Path=Items}"
                      BorderThickness="0"
                      ItemContainerStyle="{StaticResource TreeViewItemStyle}"
                      Padding="4"
                      >
                <TreeView.Resources>
                    <HierarchicalDataTemplate
                        x:Key="CheckableTreeItemTemplate"
                        ItemsSource="{Binding ElementName=CT, Path=Items}"
                        >

                        <Grid HorizontalAlignment="Stretch">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>

                            <CheckBox Grid.Column="0"
                                      IsChecked="{Binding IsChecked}"
                                      VerticalAlignment="Center"
                                      Visibility="{Binding IsCheckable, Converter={StaticResource BooleanToVisibilityConverter}}"
                            />

                            <Label Grid.Column="1" 
                                   Content="{Binding Title}" 
                                   HorizontalAlignment="Left" 
                                   VerticalAlignment="Center"
                            />

                            <Label Grid.Column="3" 
                                   Content="{Binding TagCountDisplayValue}" 
                                   HorizontalAlignment="Right" 
                                   VerticalAlignment="Center" 
                                   Visibility="{Binding ShowTagCountDisplayValue, Converter={StaticResource BooleanToVisibilityConverter}}"
                            />

                        </Grid>
                    </HierarchicalDataTemplate>
                </TreeView.Resources>
            </TreeView>
        </Expander>
    </Grid>
</UserControl>
        <local:CheckableTree Header="Test" NrOfFeaturesSelected="9">

        </local:CheckableTree>

但我总是得到回退值。有人知道为什么会这样吗?我必须将DataTemplate链接到控件类还是其他什么

解决方案(多亏了mm8)

对于DataTemplate中的每个绑定,请参考父用户控件

<Textbox
...
Text={Binding Path=XY, RelativeSource={RelativeSource AncestorType=UserControl}, FallbackValue=...}"
... />

尝试使用
{RelativeSource}
绑定到父
UserControl
头属性:

<TextBlock Grid.Column="1"
            Margin="2"
            Text="{Binding Path=Header, RelativeSource={RelativeSource AncestorType=UserControl}, FallbackValue=Header}"
            Foreground="Black"
            FontWeight="Bold"
            FontSize="14" 
            />

尝试使用
{RelativeSource}
绑定到父
UserControl
头属性:

<TextBlock Grid.Column="1"
            Margin="2"
            Text="{Binding Path=Header, RelativeSource={RelativeSource AncestorType=UserControl}, FallbackValue=Header}"
            Foreground="Black"
            FontWeight="Bold"
            FontSize="14" 
            />


先生,你是我的英雄先生,你是我的英雄