Blazor 自定义可重用基础组件之 CheckBox

19 篇文章 1 订阅

Blazor 原生提供的基础组件实在是一言难尽,这给许多Blazor UI公司很多机会。可是试用了不少如AntDisgen、BootstrapBlazor等,总会有一些难尽如意的地方。还是自己做丰衣足食吧。

首先是带Label的CheckBox,代码如下:

<p>
    <label class="form-check-label">
        <input type="checkbox" checked="@isChecked" class="form-check-input" @oninput="CheckChanged"  disabled="@Disabled"/>
        @Lable
    </label>
</p>

@code {
    [Parameter]
    public required string Lable{ get; set; }

    [Parameter]
    public required bool Checked{ get; set; }

    [Parameter]
    public bool Disabled { get; set; }

    [Parameter]
    public EventCallback<bool> CheckedChanged { get; set; }
    private async void CheckChanged(ChangeEventArgs e)
    {
        if (e.Value != null)
        {
            isChecked = (bool)e.Value;
            await CheckedChanged.InvokeAsync(isChecked);
        } 
    }
    private bool isChecked;
    protected override void OnParametersSet()
    {
        isChecked = Checked;
    }
}

其中的class是引用Bootstrap  v5.3.0的。这里不继承InputBase,也不使用为空的bool?,我觉得够用简单高效就好。

然后使用:

<CheckBox @bind-Checked="myCheck" Lable="测试标签" />

效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要扩展 WPF 中的 TreeView 控件以使用自定义图标并隐藏复选框,您需要执行以下步骤: 1. 创建一个自定义 TreeView 控件类,该类继承自 WPF 中的 TreeView 类。 2. 创建一个自定义 TreeViewItem 控件类,该类继承自 WPF 中的 TreeViewItem 类,并添加一个属性以存储每个项的自定义图标。 3. 重写 TreeView 控件的默认样式,并在其中定义自定义 TreeViewItem 控件的样式和模板。 4. 在自定义 TreeViewItem 控件的样式和模板中,更改复选框的可见性,并使用绑定将自定义图标属性与实际图标映射。 5. 在代码中使用您的自定义 TreeView 控件,并将数据绑定到其中的 TreeViewItem。 以下是一些示例代码,展示如何执行这些步骤: 1. 自定义 TreeView 控件类: ``` public class CustomTreeView : TreeView { // Add any additional functionality or properties you need for your custom control } ``` 2. 自定义 TreeViewItem 控件类: ``` public class CustomTreeViewItem : TreeViewItem { public static DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(ImageSource), typeof(CustomTreeViewItem)); public ImageSource Icon { get { return (ImageSource)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } } ``` 3. 重写 TreeView 控件的默认样式,并在其中定义自定义 TreeViewItem 控件的样式和模板: ``` <Style TargetType="{x:Type local:CustomTreeView}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:CustomTreeView}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ScrollViewer CanContentScroll="True"> <ItemsPresenter /> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type local:CustomTreeViewItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:CustomTreeViewItem}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <CheckBox IsChecked="{Binding Path=IsChecked, RelativeSource={RelativeSource TemplatedParent}}" Visibility="Collapsed" /> <Image Grid.Column="0" Grid.Row="0" Source="{TemplateBinding Icon}" Width="16" Height="16" /> <ContentPresenter Grid.Column="1" Grid.Row="0" Content="{TemplateBinding Header}" /> <ItemsPresenter Grid.Column="1" Grid.Row="1" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> ``` 4. 在自定义 TreeViewItem 控件的样式和模板中,更改复选框的可见性,并使用绑定将自定义图标属性与实际图标映射: ``` <CheckBox IsChecked="{Binding Path=IsChecked, RelativeSource={RelativeSource TemplatedParent}}" Visibility="Collapsed" /> <Image Grid.Column="0" Grid.Row="0" Source="{TemplateBinding Icon}" Width="16" Height="16" /> ``` 5. 在代码中使用您的自定义 TreeView 控件,并将数据绑定到其中的 TreeViewItem: ``` <local:CustomTreeView> <local:CustomTreeViewItem Header="Item 1" Icon="/Images/Icon1.png"> <local:CustomTreeViewItem Header="Subitem 1" Icon="/Images/Icon2.png" /> <local:CustomTreeViewItem Header="Subitem 2" Icon="/Images/Icon3.png" /> </local:CustomTreeViewItem> <local:CustomTreeViewItem Header="Item 2" Icon="/Images/Icon4.png"> <local:CustomTreeViewItem Header="Subitem 3" Icon="/Images/Icon5.png" /> <local:CustomTreeViewItem Header="Subitem 4" Icon="/Images/Icon6.png" /> </local:CustomTreeViewItem> </local:CustomTreeView> ``` 这些代码示例应该为您提供了一个起点,以帮助您创建一个具有自定义图标和隐藏复选框的扩展 TreeView 控件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落单枫叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值