是否可以在代码中访问DataTemplate中的项目?
是否可以在代码中访问DataTemplate中的项目?我的意思是,我在 Window.Resources 中定义了 DataTemplate,如下所示:
<Window.Resources>
<DataTemplate x:Key="MyTemplate" DataType="MyType">
<StackPanel Orientation="Horizontal" Height="Auto" Tag="ColorString">
<Rectangle Width="16" Height="14" Margin="2,1" VerticalAlignment="Center" Stroke="Red">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Path=FillColor}"/>
</Rectangle.Fill>
</Rectangle>
<TextBlock VerticalAlignment="Center" Text="{Binding Path=Value}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
我需要在代码中设置 Rectangle 的一些属性。我该怎么做?当 DataTemplate 加载时,其 VisualTree 为 null。
Is it possible to access items in DataTemplate in the code? I mean, I have DataTemplate defined in Window.Resources like this:
<Window.Resources>
<DataTemplate x:Key="MyTemplate" DataType="MyType">
<StackPanel Orientation="Horizontal" Height="Auto" Tag="ColorString">
<Rectangle Width="16" Height="14" Margin="2,1" VerticalAlignment="Center" Stroke="Red">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Path=FillColor}"/>
</Rectangle.Fill>
</Rectangle>
<TextBlock VerticalAlignment="Center" Text="{Binding Path=Value}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
I need to set some properties of the Rectangle in the code. How can I do this? When DataTemplate is loaded its VisualTree is null.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将 Loaded 事件添加到 StackPanel 和后面的代码中。
这不会影响 DataTemplate 本身,但每次使用它时,都会调用 StackPanel_Loaded。
GetVisualChild 的实现..
You can add the Loaded event to the StackPanel and in code behind.
This will not affect the DataTemplate itself but everytime it is used, StackPanel_Loaded will be called.
An implementation of GetVisualChild..