Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在删除父项时避免绑定错误_.net_Wpf_Xaml_Binding_Styles - Fatal编程技术网

.net 如何在删除父项时避免绑定错误

.net 如何在删除父项时避免绑定错误,.net,wpf,xaml,binding,styles,.net,Wpf,Xaml,Binding,Styles,我正在处理一个WPF项目,我正在创建一些样式,其中之一是DataGridCell样式,它工作得很好 我的问题是:当用户删除任何行时,Visual Studio的输出窗口中会显示许多错误。 这就是错误: System.Windows.Data Warning: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.

我正在处理一个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')
因此,我猜错误是因为当从
DataGrid
中删除
DataGridCell
时,绑定找不到父节点,但是,我可以做什么来避免这些错误??我的意思是,如何为绑定建立条件???

我的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>
. . . . . 

. . . . . 

希望有人能帮助我,提前谢谢。

我也遇到过这种问题和设置,大多数时候都会排除这些绑定错误

<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> 


一般来说,我也尽量减少使用
相对资源
,尽可能使用
数据上下文

谢谢你的回答,我是WPF新手,我有一个问题,这个答案可以应用于
条件下的
绑定
属性???@Dante是的,你可以,这些是绑定类的属性,因此它们适用于每个绑定;为ref.Hi akjoshi添加了代码,我只是尝试了你的建议,但我仍然收到相同的错误,我认为那是我的。我对但丁的作品投了更高的票,而不是重新发布。很抱歉给你带来了困惑。这个答案是否仍然相关?我似乎记得在某个地方,对过时的答案投否决票是可以的,这样so的内容总是最新的;我不知道有什么变化或新的功能来取代它,我仍然使用TargetNull和FallBack属性,它们在大多数情况下都有效,但也可能取决于视觉树和通知等。