0

複数のコントロールを含むDataTemplateがあります。コントロールの1つは、データテンプレート内の他のコントロールにアクセスする必要があるボタンです。

<DataTemplate>
    <StackPanel>
        <ComboBox x:Name="optionsCombo" >
            <ComboBoxItem Content="Option1" />
            <ComboBoxItem Content="Option2" />
            <ComboBoxItem Content="Option3" />
        </ComboBox>
        <Button Name="DoSomethingButton" Margin="10" Click="DoSomethingButton_Click">Do Something</Button>
    </StackPanel>
</DataTemplate>

ボタンクリックイベントの背後にあるコードで、次のような名前でComboBoxにアクセスしようとすると次のようになります。

private void DoSomethingButton_Click(object sender, RoutedEventArgs e)
{
    ComboBoxItem myItem = (ComboBoxItem)optionsCombo.SelectedItem;
} 

エラーが発生します:「名前'optionsCombo'は現在のコンテキストに存在しません」

では、ボタンクリックイベントからDataTemplateの他のコントロールにアクセスするにはどうすればよいですか?

4

1 に答える 1

0

DataTemplates のコード生成がないため、そのようにアクセスすることはできません。つまり、optionsCombo ComboBox はコンパイル時に実際には存在しないため、エラーが発生します。コード ビハインドでそれを操作するには、VisualTreeHelper を使用する必要があります。ネット上で詳しく説明されています。送信者の親 Panel を取得し、名前で ComboBox を見つけて、適切な型にキャストするだけです。そこにあります!

于 2012-06-05T13:55:17.433 に答える