没有标签的复选框
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] 扩展得更远=]盒子。如你所见here,Rectangle
本身只有一个Width=10
。所以如果你设置 MinWidth=10
,CheckBox 不会比 Rectangle
:
宽
<CheckBox Classes="noContent" Content="Test3" MinWidth="10" Background="Orange" IsChecked="True"></CheckBox>
我正在尝试使用没有标签的复选框。我原以为我只让 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] 扩展得更远=]盒子。如你所见here,Rectangle
本身只有一个Width=10
。所以如果你设置 MinWidth=10
,CheckBox 不会比 Rectangle
:
<CheckBox Classes="noContent" Content="Test3" MinWidth="10" Background="Orange" IsChecked="True"></CheckBox>