2017-05-05 76 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)。

相关问题