Как сделать метку на том же уровне, что и флажок, но не переключать метки по клику в WPF? - PullRequest
0 голосов
/ 19 мая 2018

Я хочу создать список флажков, который будет переключаться только при прямом нажатии на флажок.

К сожалению, если я сделаю так:

                    <ListBox Name="LanguagesListBox">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <ListBoxItem>
                                    <StackPanel Orientation="Horizontal">
                                        <CheckBox/>
                                        <Label Content="{Binding InputLanguage.LayoutName}"/>
                                    </StackPanel>

                                </ListBoxItem>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

Я получаю флажок, не выровненный по вертикали с его меткой:

enter image description here

Но если я напишу

                  <ListBox Name="LanguagesListBox">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <ListBoxItem>
                                    <StackPanel Orientation="Horizontal">
                                        <CheckBox Content="{Binding InputLanguage.LayoutName}"/>

                                    </StackPanel>

                                </ListBoxItem>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

, я получу флажок переключателя при нажатии на ярлык

enter image description here

Как получить оба?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Избавьтесь от ListBoxItem, замените Label на TextBlock и установите для его свойства VerticalAlignment значение Center:

<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>

Вы можете настроить свойство MarginTextBlock для дальнейшей настройки его положения.

0 голосов
/ 21 мая 2018

Это флажок поведения, поэтому вы не можете изменить его.Вам придется создать пользовательский элемент управления, чтобы построить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...