0
我有一个问题绑定字段属性的列标题后面的代码。运行应用程序时,标题始终为空字符串。WPF绑定和上下文
<UserControl [...]
DataContext="{Binding RelativeSource={RelativeSource Self}}" >
<c:DataGrid Name="m_dataGrid"
ItemsSource="{Binding Configurations}" >
<c:DataGrid.Columns>
<!-- Column 'Importieren/Exportieren' -->
<c:DataGridTemplateColumn Width="Auto"
MinWidth="100">
<c:DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Name="m_checkBoxExportAllDefinitions"
Content="{Binding ImportExportColumnHeader, Mode=OneWay}"/>
</DataTemplate>
</c:DataGridTemplateColumn.HeaderTemplate>
<c:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsDefinitionExportEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</c:DataGridTemplateColumn.CellTemplate>
</c:DataGridTemplateColumn>
</c:DataGrid>
</UserControl>
正如你所看到的,UserControl
的DataContext
被设置到自身和数据网格的ItemsSource
被设置为配置,它的背后是产权验证码:
public ObservableCollection<ImportExportConfiguration> Configurations { get; private set; }
当在用于绑定标题文本的属性后面的代码中设置断点(在HeaderTemplate
中定义),则不会调用getter:
public string ImportExportColumnHeader {
get {
return IsImport ? ErgaenzungsfelderResources.ImportExportSelectionControlImportierenColumnHeader :
ErgaenzungsfelderResources.ImportExportSelectionControlExportierenColumnHeader;
}
}
将CellTemplate
绑定到IsDefinitionExportEnabled
的作品。这是ImportExportConfiguration
类中包含的一个属性,而ImportExportColumnHeader
不是。
我想wpf试图从ImportExportConfiguration
得到ImportExportColumnHeader
属性,它不存在;这就是为什么它显示一个空头。它是否正确?
如何访问属性背后的代码?
它看起来像该用户控件的DataContext的被设置为自身。删除datacontext并重试。此外,chekc绑定错误的输出窗口 – user1
@ user1我想以这种方式绑定它,以便能够绑定到属性背后的代码。删除'DataContext'会中断'CellTemplate'的绑定。我认为问题的出现是因为我想将HeaderTemplate(对所有绑定项目都是相同的)绑定到属性后面的代码和'CellTemplate'(对于所有绑定项目不同)到'Configurations'中包含的属性上。 – Philippe
@ user1 outupt窗口不显示任何绑定错误 – Philippe