gpt4 book ai didi

c# - TabItem/TabControl 中的 DataGridTextColumn 标题绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-03 10:23:30 25 4
gpt4 key购买 nike

我似乎在尝试绑定(bind) DataGridTextColumn 的标题列时遇到问题。当我没有包装它的 TabControl/TabItem 时,此代码工作正常,但是当我将它放在 TabControl 中时,它再也找不到 DayHeader。我想这是 FindAncestor/AncestoryType 的问题,但我不确定该怎么做才能修复它,或者这是否真的是问题所在。任何帮助,将不胜感激。

<!--Not Working
<TabControl Margin="0,25,0,0" Background="{x:Null}">
<TabItem >
<Grid >
<DataGrid></DataGrid>
</Grid>
</TabItem>
<TabItem Header="Test Header">-->

<!--Working-->
<Grid>
<DataGrid ItemsSource="{Binding RunningViewSource.View}" Margin="0,27,0,-5" SelectionMode="Single">
<DataGrid.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VirtualizingStackPanel.VirtualizationMode="Recycling" />
</ItemsPanelTemplate>
</DataGrid.ItemsPanel>
<DataGrid.Columns>
<DataGridTextColumn Header="Contingencies" Binding="{Binding Contingencies}"
IsReadOnly="True" Width="400" />
<DataGridTextColumn Binding="{Binding Days[4]}" CellStyle="{StaticResource NumberCell}">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.DayHeader, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}">
</TextBlock>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>

<!--Not Working
</TabItem>
</TabControl>-->

如果我添加非工作部分,这是我在输出窗口中收到的消息。

System.Windows.Data 错误:4:找不到与引用'RelativeSource FindAncestor,AncestorType='System.Windows.Controls.DataGrid',AncestorLevel='1''的绑定(bind)源。 BindingExpression:Path=DataContext.DayHeader;数据项=空;目标元素是'TextBlock'(名称='');目标属性是“文本”(类型“字符串”)

编辑:当我有一个包含多个 TabItem 的 TabControl 时,我只能重现此错误。我已经更新了我的代码。抱歉有任何混淆,但添加其他 TabItem 是导致 DayHeader 无法访问的原因。

Edit2:我知道很多人使用 Snoop 来帮助他们解决绑定(bind)问题。好吧,当我用 Snoop 检查列标题时,当我突出显示它们时,文本会神奇地出现。我不知道为什么会这样,所以希望对 Snoop 有更多了解的人能够提供帮助。这是用于访问 DayHeader 的代码,也许这会有所帮助。
//Code Behind
private string dayHeader;

public string DayHeader
{
get { return dayHeader; }
set
{
dayHeader = value;
NotifyOfPropertyChange(() => DayHeader);
}
}

谢谢你的帮助。

最佳答案

DataGridTextColumn.Header不在可视化树中,因此它没有继承 DataContext。您可以使用 Freezable this 中显示的类文章。

关于c# - TabItem/TabControl 中的 DataGridTextColumn 标题绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17307459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com