wpf使用usercontrol自定义标签

2021-12-06 14:26:01 浏览数 (1)

自定义标签

想向js一样自定义一个组件,过程很复杂,并没有js那样好操作,直接上代码吧,

代码语言:javascript复制
   <UserControl.ContentTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="25"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid Background="#1979ca" Grid.Row="0">
                    <TextBox Name="title" Text="{Binding Header,ElementName=comstom}" Background="Transparent" HorizontalAlignment="Left" 
                         Foreground="White" VerticalAlignment="Center" BorderThickness="0"/>
                    <Image Source="Resource/a.png" HorizontalAlignment="Right" Margin="6,0" Height="18" MouseLeftButtonDown="Image_MouseLeftButtonDown"/>
                </Grid>
                <ContentPresenter Content="{Binding}" Grid.Row="1" />
            </Grid>
        </DataTemplate>
    </UserControl.ContentTemplate>

自定义属性

代码语言:javascript复制
public static DependencyProperty HeaderProperty =
    DependencyProperty.Register("Header", typeof(string), typeof(TitleWindow), new PropertyMetadata(""));
public string Header
{
     get { return (string)GetValue(HeaderProperty); }
     set{SetValue(HeaderProperty, value);}
}

讲解

使用模板contenttemplate,重写usercontrol,而不是在usercontrol里面直接加grid等标签,最后uesrcontrol的content通过

代码语言:javascript复制
<ContentPresenter Content="{Binding}" Grid.Row="1" />

直接被转移到了一个新的节点上

或者通过loaded消息,在加载后,修改content的节点,否则同一个节点在两个父节点下会报错的。

0 人点赞