【问题标题】:Get DataContext from UserControl从 UserControl 获取 DataContext
【发布时间】:2011-05-30 14:37:10
【问题描述】:

我有一个用户控件,其数据上下文设置如下:

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

在此用户控件中,我想加载一个网格视图,其中包含 5 列中的对象列表,其中包含多个值(日期、网址、名称...以及删除每一行的按钮)。

要添加此按钮,我想使用我在 UserControl ViewModel 中拥有的命令和我将在我的数据网格源数据上下文中拥有的 CommandParameter。

我认为最好的方法是将该按钮中的数据上下文设置为静态资源,但它不起作用......知道如何做到这一点吗?

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

提前致谢。

【问题讨论】:

    标签: c# silverlight mvvm


    【解决方案1】:

    试试:

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

    和:

    CommandArgument="{Binding}"
    

    【讨论】:

    • 感谢您的回复!!这不是问题,除了最后一列我想绑定到项目数据上下文(用于命令参数)和另一个绑定到数据数据上下文(用于命令)之外,它对所有内容都有效。
    • 对不起,误解了这个问题。看看我的编辑......我认为这应该工作
    • 最后这不起作用:(。它执行但 XAML 将其标记为错误,例如,未执行 OnCanExecute :(
    猜你喜欢
    • 2023-03-31
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多