2011-10-31 11 views
0
<ItemsControl Name="CanvasTableMap" ItemsSource="{Binding}" ItemsPanel="{DynamicResource ItemsPanelTemplate1}" ItemTemplate="{DynamicResource DataTemplate1}"> 
    <ItemsControl.Resources> 
     <ItemsPanelTemplate x:Key="ItemsPanelTemplate1"> 
      <WrapPanel Background="{DynamicResource ContentBackground}" />   
     </ItemsPanelTemplate> 
     <DataTemplate x:Key="DataTemplate1"> 
      <Button Canvas.Left="100" Content="{Binding Name}" Template="{DynamicResource ButtonTableTemplate}"></Button> 
     </DataTemplate> 
    </ItemsControl.Resources>  
</ItemsControl> 

これは私のコードです。問題はありません。私はadornerを作りました。私が望むときには、各ボタンのadornerを追加したいと思います。私はボタンを手に入れる方法を知らないので少し難しいです。 CanvasTableMap.ItemsはModelを返しますので、コントロールへのアクセスを効率的に取得する方法はわかりません。拘束された子供にアドナーを追加しますか?

答えて

0

それを行う簡単な方法は、ボタンのLoadedイベントのハンドラを定義し、そのハンドラでadornerを追加することです:

XAML

<Button Canvas.Left="100" Content="{Binding Name}" ... Loaded="Button_Loaded" /> 

コードビハインド

private void Button_Loaded(object sender, RoutedEventArgs e) 
{ 
    var button = (Button)sender; 
    var layer = AdornerLayer.GetAdornerLayer(button); 

    // Add the adorner 
    ... 
} 

コードビハインドを使用したくない場合は、 e添付された動作(System.Windows.Interactivityまたは添付プロパティの作成)

0

ItemContainerGeneratorを使用して、データ(ContainerFromItem)から作成したコントロールを取得できます。そういうことをするのは大したことじゃない。

+0

代替手段はありますか?アドオンのMicrosoft公式方法はコードです。私はハックを実装する時間がありません。 ContainerFromItemどのパラメータを渡すべきかわかりません。 – GorillaApe

+0

@Parhs:Uhm。データ項目?あなたはその文書を読んでいないのですか? –

関連する問題