为绑定的孩子添加装饰器?
<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 返回模型,因此我不知道如何有效地访问控件。
<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>
Here is my code.No problem with that. I have created an adorner and i would like to add an adorner for each button when i want. It is a little difficult as i dont know how to get the Buttons. CanvasTableMap.Items returns the Model so i dont know how to get access to the controls efficiently.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一种简单的方法是为按钮的
Loaded
事件定义一个处理程序,并在该处理程序中添加装饰器:XAML
代码隐藏
如果您不想使用代码隐藏,则可以创建附加行为(使用
System.Windows.Interactivity
或通过创建附加属性An easy way to do that is to define a handler for the
Loaded
event of the button, and add the adorner in that handler:XAML
Code-behind
If you don't want to use code-behind, you can create an attached behavior (either with
System.Windows.Interactivity
or by creating an attached property)您可以使用
ItemContainerGenerator
获取从数据创建的控件 (ContainerFromItem
) 。通常以这种方式做事并不是一个好主意。You can use the
ItemContainerGenerator
to get the control created from the data (ContainerFromItem
). Usually doing things that way is not such a good idea though.