Очень интересная проблема. Я сам хотел бы узнать больше о том, почему UserControl IsMouseOver изменяется на false, когда TextBlock (ы) в его визуальных элементах нажимаются мышью.
Однако, есть еще один способ решить эту проблему ... возможно, вам больше понравится этот подход.
Вместо того, чтобы использовать RadioButton (поскольку вы используете его заново), почему бы вам просто не использовать Control? (я думаю, что IsMouseOver меняется на false из-за того, что это элемент управления, производный от Button. )
Ниже приведено xaml для окна ...
<Window
x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1"
Width="300"
Height="300"
>
<Window.Resources>
<Style TargetType="{x:Type Control}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Control}">
<local:UserControl1/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Border BorderBrush="Black" BorderThickness="2">
<StackPanel>
<Control x:Name="OptionButton" Height="100"/>
<TextBlock Text="{Binding ElementName=OptionButton, Path=IsMouseOver}"/>
</StackPanel>
</Border>
</Window>
EDIT:
Я просто хотел добавить ... что если вы согласны с вышеупомянутым подходом ... тогда, вероятно, правильнее всего будет просто использовать UserControl в визуальном дереве окна, а не использовать элемент Control. Итак ... вот так:
<Window
x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1"
Width="300"
Height="300"
>
<Border BorderBrush="Black" BorderThickness="2">
<StackPanel>
<local:UserControl1 x:Name="OptionButton" Height="100"/>
<TextBlock Text="{Binding ElementName=OptionButton, Path=IsMouseOver}"/>
</StackPanel>
</Border>
</Window>