2012-07-10 120 views
1

嗨我有一個列表框綁定到一個XML文件,並且我給他們每個項目一個按鈕數據模板,所以我可以輕鬆地註冊一個單擊事件到每個項目。得到點擊按鈕內容從按鈕樣式列表框綁定到xml

我很想讓點擊按鈕的內容做一些查詢。

這裏是我的代碼

XAML

<ListBox Name="listBox1" > 
     <ListBox.ItemsSource> 
      <Binding Source="{StaticResource keywordLib}" XPath="Position/Keyword/Word"/> 
     </ListBox.ItemsSource> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Button Content="{Binding}" Click="keyword_Click"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 

    </ListBox> 

後google搜索解決方案的時間。我知道我應該使用點擊事件的發件人,並且正常按鈕的工作正常,沒有在這裏的話。

private void keyword_Click(Object sender, RoutedEventArgs e) 
    { 
     Button btn = (Button)sender; 
     String keyword = btn.Content.ToString(); 
     MessageBox.Show(keyword); 
    } 

消息框顯示「System.Xml.XmlElement」。而不是按鈕的內容。

非常感謝任何人都可以幫助我解決這個問題。我花了這麼多錢,我猜想解決方案只是一行代碼。

回答

0

將按鈕的內容轉換爲System.Xml.XmlElement。然後使用這個元素的InnerText屬性。或者,也許你必須做更多的操作才能看到你的文字。這取決於你的XML文件是如何構建的。

Rq:當我需要區分代碼中的幾個相同的控件時,我使用標籤。因此,我可以獨立設置內容和標籤(對於多語言應用程序是必需的),甚至可以在選擇簡化代碼處理的標籤(前綴/後綴,索引...)時使用「標籤邏輯」。

+0

非常感謝您的幫助。 InnerText屬性工作!你節省了我的時間,非常感謝你。 – MartinLee 2012-07-10 00:32:36

+0

很高興我能幫到你。 – GameAlchemist 2012-07-10 08:25:42

1

我知道你已經得到了答案,但是,這是另一種獲得按鈕內容的類型。

private void keyword_Click(Object sender, RoutedEventArgs e) 
    { 
     var keyword= (e.Source as Button).Content.ToString(); 
     MessageBox.Show(keyword); 
    }