在项目控件中获取用户控件绑定的对象?

时间:2009-10-07 23:08:05

标签: c# silverlight silverlight-3.0

我有一个父usercontrol,这里是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>

在这个usercontrol中(在下载可观察集合中每个项目添加一个)我有多个下载器:下载用户控件(如上面的项目模板中所示),其中包含以下xaml通知绑定到百分比完成和datacontext ..

</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"/>

这一切都很棒,我添加一个项目到UI收集新项目,添加一个新的控件,甜。问题是,我希望能够在代码隐藏中获取Child用户控件中的绑定对象,所以我可以在其上调用方法,我只是无法找到一种方法来实现它,在代码隐藏中为子控件我希望能够做这样的事情

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

        object DownloadEntity = this.DataContext as DownloadEntity;

    }

但没有datacontext ......

有没有办法获得我的子用户控件绑定的“对象”?

谢谢!

1 个答案:

答案 0 :(得分:2)

因为我现在已经发现如果我处理xaml中控件的事件,则设置datacontext并且可以如下导出

MyDataBoundEntity mdbe = this.DataContext as MyDataBoundEntity;

这很容易