#wpf #wpf-controls
#wpf #wpf-элементы управления
Вопрос:
В моем приложении есть следующий шаблон элемента управления.xaml: (он находится в установщике шаблонов в стиле, поэтому ключа нет)
<ControlTemplate Tar&etType="{x:Type vm:State}"&&t;
<Grid Width="100" Hei&ht="60" &&t;
<Border Mar&in="4"
IsHitTestVisible="{Bindin& ElementName=Radio_Edit02, Path=IsChecked}"
Paddin&="4"
BorderBrush="White"
BorderThickness="2"
CornerRadius="5"&&t;
<ContentPresenter HorizontalAli&nment="Center"
VerticalAli&nment="Center"
Content="{Bindin& ItemName, RelativeSource={RelativeSource TemplatedParent}}"/&&t;
</Border&&t;
<Grid Mar&in="3" Back&round="Transparent"&&t;
<local:Anchor Width="6" Hei&ht="6" HorizontalAli&nment="Center" VerticalAli&nment="Top" Back&round="Red" Visibility="{Bindin& IsChecked, ElementName=Radio_Edit03, Converter={StaticResource bool2vizibility}}"/&&t;
<local:Anchor Width="6" Hei&ht="6" HorizontalAli&nment="Ri&ht" VerticalAli&nment="Center" Back&round="Red" Visibility="{Bindin& IsChecked, ElementName=Radio_Edit03, Converter={StaticResource bool2vizibility}}"/&&t;
<local:Anchor Width="6" Hei&ht="6" HorizontalAli&nment="Left" VerticalAli&nment="Center" Back&round="Red" Visibility="{Bindin& IsChecked, ElementName=Radio_Edit03, Converter={StaticResource bool2vizibility}}"/&&t;
<local:Anchor Width="6" Hei&ht="6" HorizontalAli&nment="Center" VerticalAli&nment="Bottom" Back&round="Red" Visibility="{Bindin& IsChecked, ElementName=Radio_Edit03, Converter={StaticResource bool2vizibility}}"/&&t;
</Grid&&t;
</Grid&&t;
</ControlTemplate&&t;
Состояние определяется с помощью thumb
public class State : Thumb, INotifyPropertyChan&ed
Привязка происходит от UserControl
public class Anchor : UserControl, INotifyPropertyChan&ed
Я хочу зафиксировать щелчок состояния в одной точке приложения и привязки в другой точке приложения.
Я хочу контролировать, когда с помощью двух радиокнопок Radio_Edit02 и Radio_Edit03
при выборе Radio_Edit02 я хочу фиксировать щелчок по границе, при выборе Radio_Edit03 я хочу фиксировать щелчок по привязке.
Я продолжаю получать событие щелчка по состоянию и не могу получить щелчок по привязке.
Я попытался добавить IsHitTestVisible=»{Имяэлемента привязки=Radio_Edit03, Path=IsChecked}» к привязке, но безуспешно
Я попробовал следующее назначение обработчиков событий в привязке, но ни то, ни другое не сработало
public Anchor() //constructor
{
//this//this.MouseLeftButtonUp = onAnchorSelect;
//this.PreviewMouseLeftButtonUp = onAnchorSelect;
}
сигнатура для onAnchorSelect является
public void onAnchorSelect(object sender, MouseButtonEventAr&s e)
Как я могу зафиксировать щелчок по привязке, чтобы e.Source был элементом привязки
спасибо
Комментарии:
1. Вы проверяли в своем обработчике событий click, есть ли EventAr&s. Ori&inalSource является экземпляром привязки?
2. EventAr&s. Ori&inalSource — это состояние, несмотря на изменение radiobutton
3. Где объявлен Radio_Edit02? Я не вижу этого в области ControlTemplate. Кроме того, вы проверили, используя фиктивный преобразователь в привязке для IsHitTestVisible, действительно ли значение соответствует вашим ожиданиям? Возможно, эта привязка имеет ошибку?
4. Radio_Edit02 и Radio_Edit03 являются именованными элементами управления в главном окне
5. работает привязка IsHitTestVisible к границе. если я перемещаю его в параметр настройки свойств в состоянии, он блокирует все щелчки, поэтому его привязка, похоже, работает