如何从代码隐藏的DataTemplate中的TextBlock获取文本
问题描述:
我有一个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),我将申请上的按钮点击该值取决于在使用哪个手风琴是开放的
答
如果你需要让你在DataTemplate中显示的TextBlock的文本,那么你可以通过以下方式实现它,
//在文本块在XAML中
使用<TextBlock Loaded="Txt_Loaded">
//在代码隐藏
private void Txt_Loaded(object sender, RoutedEventArgs e)
{
var myText = (sender as TextBlock).Text;
}
每当将TextBlock装入鉴于上述事件将被激发。因此,您可以像在上面的代码中那样获取TextBlock中的文本。
答
使用“BindingContextChanged”事件来获取发件人(实际视图,TextBlock)。
这是错误的做法。你从哪里得到这个'Header'属性?无论在MainWindow._RE.ListActionsParType中是什么,都要实现INotifyPropertyChanged并在代码隐藏中设置它的Header属性。这将更新Accordion项目中的文字。 –
@EdPlunkett谢谢你的回答。我设法使用INotifyPropertyChanged显示所有信息。我想要的是能够使用textblock中的文本作为字符串,以便我可以在方法中使用它,并且我希望此值根据哪个手风琴被展开而改变 – 281
这是错误的方法。文本块中的文本来自Header属性。更改标题属性,文本将会改变。 –