2017-05-05 78 views
-1

我有一個Accordion控件,我綁定值並將它們顯示在DataTemplate中。 這是我在我的用戶控件:如何從代碼隱藏的DataTemplate中的TextBlock獲取文本

<layoutToolkit:Accordion x:Name="MyAccordion"> 
<layoutToolkit:Accordion.ItemTemplate> 
    <DataTemplate > 
     <TextBlock x:Name="Header" Text="{Binding Header}"/> 
    </DataTemplate> 
</layoutToolkit:Accordion.ItemTemplate> 
<layoutToolkit:Accordion.ContentTemplate> 
    <DataTemplate> 
     <StackPanel> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock x:Name="Content" Text="{Binding Content}" /> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal"> 
       <Button x:Name="MyMethod" Content="Method" Click="MyMethod"/> 
      </StackPanel> 
     <StackPanel> 
    </DataTemplate> 
</layoutToolkit:Accordion.ContentTemplate> 

我的綁定工作,現在我希望能夠使用文本從文本塊中代碼的方法適用落後,但我希望這個值取決於哪個手風琴是開放的。 是否有可能實現這一目標?

這是我的代碼隱藏如何:

 public MyUserCOntrol() 
    { 
     InitializeComponent(); 
     this.MyAccordion.SelectionMode = AccordionSelectionMode.ZeroOrOne; 

     //method to fill the accordion 
     this.MyAccordion.ItemsSource = MainWindow._RE.ListActionsParType; 
    } 

    public void MyMethod(object sender, EventArgs e) 
    { 
     string TxtBlockContent = ....; 
     // so i can use this value in other operations 
    } 

我想創建一個方法(在這裏是myMethode),我將申請上的按鈕點擊該值取決於在使用哪個手風琴是開放的

+1

這是錯誤的做法。你從哪裏得到這個'Header'屬性?無論在MainWindow._RE.ListActionsParType中是什麼,都要實現INotifyPropertyChanged並在代碼隱藏中設置它的Header屬性。這將更新Accordion項目中的文字。 –

+0

@EdPlunkett謝謝你的回答。我設法使用INotifyPropertyChanged顯示所有信息。我想要的是能夠使用textblock中的文本作爲字符串,以便我可以在方法中使用它,並且我希望此值根據哪個手風琴被展開而改變 – 281

+1

這是錯誤的方法。文本塊中的文本來自Header屬性。更改標題屬性,文本將會改變。 –

回答

-1

如果你需要讓你在DataTemplate中顯示的TextBlock的文本,那麼你可以通過以下方式實現它,

//在文本塊在XAML中

使用
<TextBlock Loaded="Txt_Loaded"> 

//在代碼隱藏

private void Txt_Loaded(object sender, RoutedEventArgs e) 
{ 
    var myText = (sender as TextBlock).Text; 
} 

每當將TextBlock裝入鑑於上述事件將被激發。因此,您可以像在上面的代碼中那樣獲取TextBlock中的文本。

+0

謝謝,這就是我一直在尋找。對不起,如果我一開始不清楚! – 281

+0

歡迎。如果能解決您的問題,請提供答案。 – Divakar

+0

我還不行,我沒有足夠的聲望。只要我有足夠的 – 281

0

使用「BindingContextChanged」事件來獲取發件人(實際視圖,TextBlock)。

相關問題