如何在运行时将wpf控件添加到模板选项卡控件?

如何在运行时将wpf控件添加到模板选项卡控件?,wpf,Wpf,“我的选项卡”控件具有如下资源: </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> &l

“我的选项卡”控件具有如下资源:

                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Image" Property="Visibility" Value="Visible" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="Gray" />
                            <Setter TargetName="TextBlock" Property="Foreground" Value="Black" />
                            <Setter TargetName="Border" Property="Margin" Value="-2,0,2,-1" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True" SourceName="Border" >
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="DarkGray" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                   <Grid Background="WhiteSmoke" Name="Grid1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="5"/>
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Canvas Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}" />

                </Grid> 
                </DataTemplate>

            </Setter.Value>
        </Setter>
    </Style>


如何将“标签”之类的控件添加到TabControl的网格(在名为“Grid1”的资源中)?

尝试在VisualTree中搜索网格,然后将控件添加到网格中。可以使用以下帮助器函数查找网格,然后检查名称。否则,您还可以扩展代码以更轻松地进行搜索(通过添加名称参数)

                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Image" Property="Visibility" Value="Visible" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="Gray" />
                            <Setter TargetName="TextBlock" Property="Foreground" Value="Black" />
                            <Setter TargetName="Border" Property="Margin" Value="-2,0,2,-1" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True" SourceName="Border" >
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="DarkGray" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                   <Grid Background="WhiteSmoke" Name="Grid1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="5"/>
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Canvas Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}" />

                </Grid> 
                </DataTemplate>

            </Setter.Value>
        </Setter>
    </Style>
void findChildFrameworkElementSoftType(DependencyObject父对象,IList列表),其中T:FrameworkElement{
依赖对象子对象;
对于(int i=0;i
比如:

                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Image" Property="Visibility" Value="Visible" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="Gray" />
                            <Setter TargetName="TextBlock" Property="Foreground" Value="Black" />
                            <Setter TargetName="Border" Property="Margin" Value="-2,0,2,-1" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True" SourceName="Border" >
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="DarkGray" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                   <Grid Background="WhiteSmoke" Name="Grid1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="5"/>
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Canvas Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}" />

                </Grid> 
                </DataTemplate>

            </Setter.Value>
        </Setter>
    </Style>
List<Grid> list=new List<Grid>();
FindCHildFrameworkElementsOfType<Grid>(this,list)
foreach(Grid grid in list){
    if(grid.Name=="Grid1"){
       // Add here your control
       break;
    }
}
List List=新列表();
FindChildFrameworkElementSoftType(此,列表)
foreach(列表中的网格){
if(grid.Name==“Grid1”){
//在这里添加您的控件
打破
}
}

您可以添加加载的
事件处理程序:

                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Image" Property="Visibility" Value="Visible" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="Gray" />
                            <Setter TargetName="TextBlock" Property="Foreground" Value="Black" />
                            <Setter TargetName="Border" Property="Margin" Value="-2,0,2,-1" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True" SourceName="Border" >
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="DarkGray" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                   <Grid Background="WhiteSmoke" Name="Grid1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="5"/>
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Canvas Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}" />

                </Grid> 
                </DataTemplate>

            </Setter.Value>
        </Setter>
    </Style>
<Grid Background="WhiteSmoke" Name="Grid1" Loaded="Grid1_Loaded">
特殊情况:

                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Image" Property="Visibility" Value="Visible" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="Gray" />
                            <Setter TargetName="TextBlock" Property="Foreground" Value="Black" />
                            <Setter TargetName="Border" Property="Margin" Value="-2,0,2,-1" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True" SourceName="Border" >
                            <Setter TargetName="Border" Property="Background" Value="White" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="DarkGray" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                   <Grid Background="WhiteSmoke" Name="Grid1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="5"/>
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Canvas Background="{StaticResource {x:Static SystemColors.ActiveCaptionBrushKey}}" />

                </Grid> 
                </DataTemplate>

            </Setter.Value>
        </Setter>
    </Style>