itemscontrolにあるラジオボタンにイベントをリンクしようとしています。Silverlight:ItemsControl内のアイテムにイベントを添付する
マイテンプレートは以下の通りです:カスタムコントロールのための私は.csファイルで
<ItemsControl x:Name="RadioButtonsItemsControl" Height="auto" Width="auto" ItemsSource="{TemplateBinding MapLayers}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="{TemplateBinding RadioButtonOrientation}" Margin="5"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton Content="{Binding ID}" IsChecked="{Binding Visible, Mode=TwoWay}"
IsEnabled = "{Binding IsInScaleRange}"
ToolTipService.ToolTip=""
GroupName="BaseLayer"
Foreground="{TemplateBinding ForeGroundBrush}" FontSize="11">
</RadioButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
、私はItemsControlのためのテンプレートの一部を持っている、と私はradioButtonsItemsControlではない
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
radioButtonsItemsControl = GetTemplateChild("RadioButtonsItemsControl") as ItemsControl;
if (radioButtonsItemsControl != null) radioButtonsItemsControl.MouseLeftButtonDown += radioButtonsItemsControlMouseLeftButtonDown;
}
イベントを添付するnullに等しいです(まだこの段階でラジオボタンが設定されていません)。ただし、radioButtonsItemsControlMouseLeftButtonDownイベントは、後でアイテムコントロール内をクリックすると登録されるはずです。
void radioButtonsItemsControlMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
RadioButton radioButton = e.OriginalSource as RadioButton;
if (radioButton != null) radioButton.Checked += OnChecked;
}
私も私のItemsControlにでクリックしたときにこれが発火することはありません:radioButtonsItemsControlMouseLeftButtonDownを。
私はこれについて正しいことをしています。だから、ItemsControls内のアイテムにイベントをアタッチするための代替方法が公開されています。
おかげで、 マイク・一般