如何使标签与复选框处于同一级别,但不在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
。您还可以在每个页面上调整
边距
填充