试图在DataGrid
并没有理由让那些绑定错误使用分组(他们不属于我的代码,我也明白的方式来对付他们):绑定错误从哪里来引擎盖下
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=AreRowDetailsFrozen; DataItem=null; target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')
和
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=HeadersVisibility; DataItem=null; target element is 'DataGridRowHeader' (Name=''); target property is 'Visibility' (type 'Visibility')
他们出现在每个DataGrid
排。这让我感到很不舒服!
要重现该问题我做了一个小项目
public class MyItem
{
public string A { get; set; }
}
public class ViewModel
{
public List<MyItem> List { get; set; }
public ViewModel()
{
List = new List<MyItem>(new[] { new MyItem() });
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
XAML
<DataGrid ItemsSource="{Binding List}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding A}" Header="A"/>
</DataGrid.Columns>
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<!-- anything or nothing here -->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
</DataGrid>
一些观察:
- 没有
DataGrid.GroupStyle
没有错误; - 与
AutoGenerateColumns = true
没有错误; - 没有约束力(直接设置
DataGrid.ItemsSource
)没有错误。
只有与这三个条件相反的组合才会开始发送垃圾邮件Output
带上述消息的窗口。
我该怎么办?我不能忽略错误,也没有办法解决它们。
谷歌搜索并没有真正的帮助,例如,this case被称为一个错误,我试图应用其解决方法,但没有为我工作。
P.S:在使用DataGrid
第一次尝试这样发现的bug是非常士气低落。
试图处理第二个错误。
<DataGrid.RowHeaderStyle>
<Style TargetType="DataGridRowHeader">
<Setter Property="Visibility" Value="Collapsed"/>
<Setter Property="Template" Value="{x:Null}"/>
</Style>
</DataGrid.RowHeaderStyle>
但错误依然
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=HeadersVisibility; DataItem=null; target element is 'DataGridRowHeader' (Name=''); target property is 'Visibility' (type 'Visibility')
谢谢,伙计!通过Google搜索搜索了很多“解决方法”之后,只有您的方式有效! – 2017-06-19 02:08:53
也为我工作。谢谢! – GordoFabulous 2017-08-03 21:11:17