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>

これが私のコードです。問題ありません。アドナーを作成しました。必要に応じて各ボタンにアドナーを追加したいと思います。ボタンの入手方法がわからないので、少し難しいです。CanvasTableMap.Items はモデルを返すため、コントロールに効率的にアクセスする方法がわかりません。

4

2 に答える 2

0

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

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
    ...
}

コードビハインドを使用したくない場合は、アタッチされたビヘイビアーを作成できます(System.Windows.Interactivityアタッチされたプロパティを使用して、または作成することにより)

于 2011-10-31T03:10:22.057 に答える
0

を使用しItemContainerGeneratorて、データから作成されたコントロールを取得できます ( ContainerFromItem)。通常、そのように物事を行うことはあまり良い考えではありません。

于 2011-10-31T00:45:57.837 に答える