如何使标签与复选框处于同一级别,但不在WPF中切换标签单击?
我想做一个复选框列表,只有直接点击复选框才能切换 不幸的是,如果我这样做:如何使标签与复选框处于同一级别,但不在WPF中切换标签单击?,wpf,xaml,checkbox,Wpf,Xaml,Checkbox,我想做一个复选框列表,只有直接点击复选框才能切换 不幸的是,如果我这样做: <ListBox Name="LanguagesListBox"> <ListBox.ItemTemplate> <DataTemplate> <ListBoxItem>
<ListBox Name="LanguagesListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<CheckBox/>
<Label Content="{Binding InputLanguage.LayoutName}"/>
</StackPanel>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我发现复选框未与其标签垂直对齐:
但是如果我写
<ListBox Name="LanguagesListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding InputLanguage.LayoutName}"/>
</StackPanel>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果在标签处单击,我将获得复选框切换
如何获得两者?这是复选框行为,因此您无法更改它。
您必须创建一个用户控件来构建它。摆脱
列表框项
,将标签
替换为文本块
,并将其垂直对齐
属性设置为中心
:
<ListBox Name="LanguagesListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox/>
<TextBlock Text="{Binding InputLanguage.LayoutName}" VerticalAlignment="Center" Margin="2,-1,0,0"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
您可以调整
TextBlock
的Margin
属性以进一步调整其位置。您可以使用单独的标签,只需尝试更改每个标签上的属性以更好地对齐,如VerticalContentAlignment
和VerticalAlignment
。您还可以在每个页面上调整边距
和填充
。