0

LibraryContainer に対して次の DataTemplate を定義しました。

<DataTemplate x:Key="ContainerItemTemplate">
            <Grid>
                <Border BorderThickness="1" BorderBrush="White" Margin="3">
                    <s:SurfaceTextBox IsReadOnly="True" Width="120" Text="{Binding Path=name}" Padding="3"/>
                </Border>
                <s:SurfaceButton Content="Expand" Click="SourceFilePressed"></s:SurfaceButton>
            </Grid>
        </DataTemplate>

SourceFilePressed は次のとおりです。

 private void SourceFilePressed(object sender, RoutedEventArgs e)
        {
            Logging.Logger.getInstance().log(sender.ToString());
            e.Handled = true;
        }

メソッド SourceFilePressed で、押されたボタンと同じグリッドにある SurfaceTextBox にバインドされているオブジェクトを取得できるのは誰ですか? DataTemplate で何とかこのオブジェクトを Click-Event にアタッチできますか?

4

1 に答える 1

1

あなたの質問を正しく解析できれば、次のことができると思います。

private void SourceFilePressed(object sender, RoutedEventArgs e)
{
    var obj = (sender as FrameworkElement).DataContext;
}

説明すると、送信者はイベントのソースなので、SurfaceButton. であるFrameworkElementため、DataContextプロパティがあります。はDataContext継承されたプロパティであるため、 で明示的に設定しない限り、親 ( ) からSurfaceButton継承されます。はそれがテンプレート化しているデータ項目であるため、は と同じオブジェクトを持つことがわかります。DataContextGridDataTemplateDataContextSurfaceButtonDataContext

于 2010-10-26T21:58:39.017 に答える