没有标签的复选框

CheckBox without a label

我正在尝试使用没有标签的复选框。我原以为我只让 Content 属性 为空,只会得到 CheckBox Border,但总是有一个 space 用于包含可能的标签。当我为背景着色时,你可以看到它: [见附件,我还没有权限post图片直接插入正文][1]

然后我查看了 CheckBox.axaml。好像不能有没有label的CheckBox:

  <ControlTemplate>
    <Grid x:Name="RootGrid" ColumnDefinitions="20,*">
      <Border x:Name="PART_Border"
              Grid.ColumnSpan="2"
              Background="{TemplateBinding Background}"
              BorderBrush="{TemplateBinding BorderBrush}"
              BorderThickness="{TemplateBinding BorderThickness}" />

      <Grid VerticalAlignment="Top" Height="32">
        <Border x:Name="NormalRectangle"
            BorderThickness="{DynamicResource CheckBoxBorderThemeThickness}"
            UseLayoutRounding="False"
            Height="20"
            Width="20" />

        <Viewbox UseLayoutRounding="False">
          <Panel>
            <Panel Height="16" Width="16" />
            <Path x:Name="CheckGlyph" Stretch="Uniform" VerticalAlignment="Center" />
          </Panel>
        </Viewbox>
      </Grid>
      <ContentPresenter x:Name="ContentPresenter"
                     ContentTemplate="{TemplateBinding ContentTemplate}"
                     Content="{TemplateBinding Content}"
                     Margin="{TemplateBinding Padding}"
                     HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                     VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                     Grid.Column="1" />
      <!-- TODO: TextWrapping="Wrap" on contentpresenter -->
    </Grid>
  </ControlTemplate>

至少我看不到任何禁用标签的处理。但我真的很惊讶。我只想在 ListBox 中使用 CheckBox。我不敢相信我会是第一个想要使用没有标签的 CheckBox 的人。

我能做什么?我是 AvaloniaUI 的新手 - 对不起,我应该错过一些明显的东西。 [1]: https://i.stack.imgur.com/MGcWW.png

你总是可以像那样隐藏 ContentPresenter

<Window.Styles>
    <Style Selector="CheckBox.noContent /template/ ContentPresenter#ContentPresenter">
        <Setter Property="IsVisible" Value="False"/>
    </Style>
</Window.Styles>

<StackPanel Background="Red">
    <CheckBox Background="Blue" Content="Test1" IsChecked="True"></CheckBox>
        
    <CheckBox Classes="noContent" Content="Test2" Background="Green" IsChecked="True"></CheckBox>

    <CheckBox Classes="noContent" Content="Test3" MinWidth="10" Background="Orange" IsChecked="True"></CheckBox>
</StackPanel>

这将为每个 CheckBox 隐藏 ContentPresenter,其中 Classes="noContent"

但是从您的屏幕截图来看,我认为您当前的问题是,CheckBox 有一个 MinWidth=120,因此 Background 将比 [=30] 扩展得更远=]盒子。如你所见hereRectangle本身只有一个Width=10。所以如果你设置 MinWidth=10,CheckBox 不会比 Rectangle:

<CheckBox Classes="noContent" Content="Test3" MinWidth="10" Background="Orange" IsChecked="True"></CheckBox>