2010-06-25 60 views
1

嗨,大家好。我是Silverlight的新手,想要访问属于ListBoxItem一部分的按钮控件。但是,我不太清楚如何做到这一点。我的XAML是:Silverlight中的ListBoxItem中的访问按钮

<DataTemplate x:Key="ItemTemplate2"> 
      <Grid Height="51"> 
       <TextBlock x:Name="tbName" Text="{Binding Property1}" Margin="0,0,98,0" d:LayoutOverrides="Height" Grid.ColumnSpan="2" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
       <Button x:Name="btnInfo" HorizontalAlignment="Right" Margin="0,-11,0,0" Width="87" Height="54" VerticalAlignment="Top" Background="#FF8EC1D2" BorderBrush="#FF8EC1D2" BorderThickness="0"> 
        <Image Source="../Images/btnNameImage.png" Stretch="None"/>     
       </Button> 
      </Grid> 
     </DataTemplate> 

如何从代码隐藏中访问“btnInfo”?

感谢所有帮助

+0

你试图访问btnInfo的属性?您应该可以直接通过“btnInfo”使用它... – VoodooChild 2010-06-25 17:42:01

+0

它是DataTemplate的一部分,因此它将位于与页面的XAML不同的名称范围内,并且不会直接在代码隐藏中访问。你究竟想用按钮做什么? – 2010-06-25 17:46:43

+0

我想更改按钮的图像。 – TryNCode 2010-06-25 17:49:12

回答

1

您将无法直接从代码中访问它的身后,但你应该能够用它注册一个事件,做你想做的。将一个Loaded事件添加到按钮,然后在您的代码隐藏中定义相应的方法。

protected btninfo_Loaded(object sender, EventArgs e) 
{ 
    Button btnInfo = (Button) sender; 
    //do whatever you need to do 
} 

显然你可以做同样的事情来处理点击事件或任何你想要的。

+0

谢谢。我想为列表中的每个按钮执行此操作,而不仅仅是选定的按钮。我也尝试为图像替换创建故事板,但我无法从后面的代码中访问故事板。 – TryNCode 2010-06-25 23:19:05

+0

无论何时将其中一个DataTemplates加载到模板中,都应该运行,这是不是发生了?你可以请你展示更多的代码(比如正在托管模板的ItemsControl?) – luke 2010-06-25 23:54:10

+0

谢谢。我需要从任何按钮事件本身的外部访问按钮,所以我将每个按钮存储在一个数组中事件),并使该数组成为一个类级变量,这很好,再次感谢! – TryNCode 2010-06-26 13:32:07

0

这并不直接回答你的编程访问数据模板的问题,但绑定怎么样?

相关问题