wpf - 如何在 DataGrid.DataGridTemplateColumn 内设置 UserControl 的 DataContext?

标签 wpf mvvm user-controls wpfdatagrid datacontext

我想在 DataGridTemplateColumn 内设置用户控件的数据上下文,但它不起作用,代码如下:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding RequesterPeoples}">
<DataGrid.Columns>
    <DataGridTemplateColumn  Header="name" Width="200">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <MvvmCommonControl:CustomDataGridSelectorControl DataContext="{Binding DataContext.RequesterPeoplesDataContext,ElementName=MyWindow}">
                    <MvvmCommonControl:CustomDataGridSelectorControl.DataGridColumns>
                        <MvvmCommonControl:DataGridColumnCollection>
                            <DataGridTextColumn Header="FarsiNmae" Width="100" Binding="{Binding FarsiName, Mode=OneWay}"></DataGridTextColumn>
                        </MvvmCommonControl:DataGridColumnCollection>
                    </MvvmCommonControl:CustomDataGridSelectorControl.DataGridColumns>
                </MvvmCommonControl:CustomDataGridSelectorControl>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

最佳答案

我只需要使用 RelativeSource 而不是 ElementName

我改变了这个:

 DataContext="{Binding DataContext.RequesterPeoplesDataContext,ElementName=MyWindow}"

对此:

 DataContext="{Binding DataContext.RequesterPeoplesDataContext,RelativeSource={RelativeSource AncestorType=Window}}"

关于wpf - 如何在 DataGrid.DataGridTemplateColumn 内设置 UserControl 的 DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11132085/

相关文章:

WPF 鼠标忙图标

c# - WPF 数据网格 : DataGridComboxBox ItemsSource Binding to a Collection of Collections

swift - RxSwift、ViewModels 和 UI 绑定(bind)

javascript - Observable 的设置值未在 Knockout 中更新

asp.net - 允许服务器/用户控件上的任何属性/属性

c# - 如何确定用户控件何时完全加载并显示?

wpf - async-await 似乎使用了 UI 线程

c# - 基于最小值或最大值的数据网格值转换器

.net - Caliburn.Micro 设置控件的状态

c# - 从绑定(bind)的用户控件访问 Datacontext