Зона попадания радиокнопки WPF

1

Привет, у меня есть еще одна проблема с элементами управления WPF. У меня есть код:

<ListBox Margin="0, 5, 0, 0" ItemsSource="{Binding mySource, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <!-- Rabio template -->
            <RadioButton GroupName="radiosGroup"
                 Margin="10, 2, 5, 2"
                 Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.SelectedSetting}"
                 CommandParameter="{Binding SomeId, Mode=OneWay}"
                 Content="{Binding FileNameWithoutExtensions, Mode=OneWay}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Проблема в том, что когда я нажимаю RadioButton или его ярлык, он выбирается. Это нормально. Но ширина ListBoxItem больше, чем целая область применения RadioButton и когда я нажимаю на правую часть элемента управления - ListBoxItem выбирает, но его дочерний RadioButton этого не делает. И как расширить зону поражения RadioButton?

Одна из идей, которую я пробовал, - добавить Label в качестве контента RadioButton. Это была не лучшая идея, потому что это заставило мое приложение работать медленно.

Теги:
xaml
wpf
wpf-controls

1 ответ

2
Лучший ответ

Попробуй это:

<ListBox Margin="0,5,0,0" ItemsSource="{Binding mySource, Mode=OneWay, 
    UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single"
    HorizontalContentAlignment="Stretch"> <!-- New Property Added Here -->
    <ListBox.ItemTemplate>
        <DataTemplate>
            <!-- Rabio template -->
            <RadioButton GroupName="radiosGroup"
                 Margin="10, 2, 5, 2"
                 Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.SelectedSetting}"
                 CommandParameter="{Binding SomeId, Mode=OneWay}"
                 Content="{Binding FileNameWithoutExtensions, Mode=OneWay}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Ты сказал:

К сожалению, это не работает

К сожалению, вы ошибаетесь. Я упростил этот пример и только что проверил, что он отлично работает (по крайней мере, в Visual Studio 2010 и.NET 4):

<ListBox ItemsSource="{Binding Collection}" HorizontalContentAlignment="Stretch">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <RadioButton GroupName="Group" Content="{Binding SomeProperty}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Просто попробуйте этот код в новом проекте, и вы увидите, что он работает должным образом. Поэтому, если он не работает в вашем текущем проекте, у вас есть другой код, который каким-то образом противоречит этому ListBox. К сожалению, я ничего не могу с этим поделать.

  • 0
    К сожалению, это не работает.
  • 0
    ОК, это правда. Это работает, но только частично. Все еще ищу другое рабочее решение.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню