私は値をバインドして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だ)私が開いているアコーディオンに応じて、ボタンをクリックし、その使用にこの値を適用すること
これは間違った方法です。この 'Header'プロパティはどこから取得していますか? 'MainWindow._RE.ListActionsParType'に何があっても、' INotifyPropertyChanged'を実装し、コードビハインドに 'Header'プロパティを設定します。 Accordionアイテムのテキストが更新されます。 –
@EdPlunkettあなたの答えをありがとう。私はINotifyPropertyChangedを使ってすべての情報を表示することができます。私が望むのは、テキストブロックのテキストを文字列として使用することができるようにするためにメソッドで使用することができます。この値は、どのアコーディオンが展開されているかによって変わります。 – 281
これは間違った方法です。テキストブロック内のテキストは、Headerプロパティから来ています。ヘッダープロパティを変更すると、テキストが変更されます。 –