简体   繁体   English

从 UserControl 获取 DataContext

[英]Get DataContext from UserControl

I have a user control whose datacontext is set with this:我有一个用户控件,其数据上下文设置为:

<UserControl.Resources>
    <data:ArchivosViewModel x:Key="Data" />
</UserControl.Resources>

In this user control I want to load a grid view with a list of objects in 5 columns with several values (date, url, name... and a button to delete each row).在这个用户控件中,我想加载一个网格视图,其中包含 5 列中的对象列表,其中包含多个值(日期、url、名称......以及删除每一行的按钮)。

To add this button I want to use a command that I have in my UserControl ViewModel and a CommandParameter wich I'll have in my datagrid source datacontext.要添加此按钮,我想使用我的 UserControl ViewModel 中的命令和我的数据网格源数据上下文中的 CommandParameter。

I think the best way to do this would be to set the datacontext in that button to the staticresource but it is not working... Any idea of how to do this?我认为最好的方法是将该按钮中的数据上下文设置为静态资源,但它不起作用......知道如何做到这一点吗?

<sdk:DataGrid AutoGenerateColumns="False" Margin="5" ItemsSource="{Binding Ficheros, Mode=TwoWay, ValidatesOnDataErrors=True}" SelectionMode="Single"  Grid.Row="2" Height="Auto" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch" MinHeight="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" >
    <sdk:DataGrid.Columns>
        <sdk:DataGridTemplateColumn Header="Fecha">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <sdk:DatePicker SelectedDate="{Binding fecha_fichero, Mode=TwoWay}" Margin="5,0" Width="Auto"></sdk:DatePicker>
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn>
        <sdk:DataGridTextColumn Binding="{Binding nombre_fichero, Mode=TwoWay}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Nombre" Width="Auto" />
        <sdk:DataGridTextColumn Binding="{Binding descripcion_fichero, Mode=TwoWay}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Descripción" Width="Auto" />
        <sdk:DataGridTemplateColumn Header="Enlace">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <HyperlinkButton Margin="5,0" Width="Auto" NavigateUri="{Binding ruta_fichero, Mode=OneWay}" TargetName="_blank" Content="Abrir Fichero"></HyperlinkButton>
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn>
        <sdk:DataGridTemplateColumn Header="Eliminar">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Width="Auto" Margin="5,0" Content="Eliminar Fichero" Command="{Binding EliminarArchivoCommand}" ></Button>
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn>
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

Thanks in advance.提前致谢。

try:尝试:

 Command="{Binding EliminarArchivoCommand,Source={StaticResource Data}}" 

and:和:

CommandArgument="{Binding}"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM