gpt4 book ai didi

.net - 删除父级时如何避免绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-04 21:21:26 25 4
gpt4 key购买 nike

我正在开发一个 WPF 项目,并且正在创建一些样式,其中之一是 DataGridCell风格,效果很好。

我的问题是:当用户删除任何行时,Visual Studio 的输出窗口中会显示许多错误。

这是错误:

System.Windows.Data Warning: 4 : Cannot find source for binding with reference 
'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid',
AncestorLevel='1''.
BindingExpression:Path=CanUserAddRows; DataItem=null; target element is 'DataGridCell'
(Name=''); target property is 'NoTarget' (type 'Object')

所以,我猜这个错误是因为当 DataGridCell已从 DataGrid 中删除,绑定(bind)没有找到 Parent,但是, 我该怎么做才能避免出现这些错误?我的意思是,我怎样才能为绑定(bind)建立条件?

我的 XAML 样式代码如下:
<DataGrid Margin="6,25,6,35" x:Name="dataGrid">            
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=CanUserAddRows}" Value="False" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="#A4A4A4"/>
</MultiDataTrigger>
. . . . .

希望有人可以帮助我,在此先感谢。

最佳答案

我也遇到过这种问题,设置TargetNullValueFallbackValue大多数时候摆脱这些绑定(bind)错误。

<MultiDataTrigger.Conditions> 
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType= {x:Type DataGrid}}, Path=CanUserAddRows,
TargetNullValue=False, FallbackValue=False}" Value="False" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self},
Path=IsSelected, TargetNullValue=False,
FallbackValue=False}" Value="True" />
</MultiDataTrigger.Conditions>

一般来说,我也尽量减少使用 RelativeSource。尽可能使用 DataContext尽可能。

关于.net - 删除父级时如何避免绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474351/

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