값을 바인딩하고 DataTemplate에 표시하는 Accordion Control이 있습니다. 이 내 사용자 컨트롤에있는 것입니다 :코드 숨김에있는 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>
내 지금 난 뒤에 코드의 방법에 적용 할 수있는 TextBlock에서 텍스트를 사용할 수 있도록하려면, 작업 바인딩하지만, 아코디언이 열려있는 위치에 따라 값이 달라지기를 바랍니다. 달성 할 수 있습니까?
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의 텍스트를 얻을 필요가있는 경우
그 방법은 잘못되었습니다. 이'Header' 속성을 어디서 얻고 있습니까? 'MainWindow._RE.ListActionsParType'에있는 것이 무엇이든, 그것은'INotifyPropertyChanged'를 구현하고 코드 숨김에서 그것의'Header' 속성을 설정합니다. 그러면 아코디언 항목의 텍스트가 업데이트됩니다. –
@EdPlunkett 답변 해 주셔서 감사합니다. INotifyPropertyChanged를 사용하여 모든 정보를 표시 할 수 있습니다. 내가 원했던 것은 textblock의 텍스트를 문자열로 사용하여 메서드에서 사용할 수 있고 어떤 아코디언이 확장되는지에 따라이 값이 변경되기를 원합니다. – 281
그건 잘못되었습니다. 텍스트 블록의 텍스트가 Header 속성에서 나옵니다. Header 속성을 변경하면 텍스트가 변경됩니다. –