Получить объект, с которым связан пользовательский элемент управления, когда внутри элемента управления? - PullRequest
2 голосов
/ 08 октября 2009

У меня есть родительский контроль пользователя, вот выдержка из xaml

<Grid x:Name="LayoutRoot" Width="Auto" Height="Auto" Background="Black" >
    <ItemsControl ItemsSource="{Binding Path=Downloads, Source={StaticResource theViewModel}}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Downloader:DownloadControl DataContext="{Binding}" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>          
</Grid>
</UserControl>

в этом пользовательском контроле (по одному добавляется для каждого элемента в наблюдаемой коллекции загрузок) у меня есть несколько загрузчиков: загрузка пользовательских элементов управления (как можно видеть выше в шаблоне элемента), которые имеют следующий xaml в уведомлении, привязка к проценту выполнена текстовые данные ..

</Grid.RowDefinitions>
    <ProgressBar x:Name="progressbar" IsIndeterminate="False" Minimum="0"        
Maximum="100"     Value="{Binding PercentageComplete}" DataContext="{Binding}" 
Height="20"     HorizontalAlignment="Left" Margin="69,35,0,0" VerticalAlignment="Top" 
Width="600" Foreground="#FF20B802"/>

все это прекрасно работает, я добавляю элемент в коллекцию, пользовательский интерфейс подбирает новый элемент, добавляет новый элемент управления, сладкий. проблема в том, что я хочу иметь возможность получить связанный объект в пользовательском элементе управления Child в codebehind, поэтому я могу вызывать методы для него, я просто не могу найти способ сделать это в codebehind для дочерних элементов управления Я хотел бы иметь возможность сделать что-то вроде этого

    public DownloadControl()
    {
        // Required to initialize variables
        InitializeComponent();

        object DownloadEntity = this.DataContext as DownloadEntity;

    }

но нет данных, текст ...

есть ли способ получить "объект", к которому привязан мой дочерний элемент управления?

Спасибо!

1 Ответ

2 голосов
/ 19 октября 2009

Как я теперь обнаружил, если я обрабатываю события в элементах управления в xaml, текст данных устанавливается и может быть получен следующим образом

MyDataBoundEntity mdbe = this.DataContext as MyDataBoundEntity;

так просто

...