2010-06-25 80 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

這並不直接回答你的編程訪問數據模板的問題,但綁定怎麼樣?