5

私は WPF プロジェクトに取り組んでおり、いくつかのスタイルを作成しています。そのうちの 1 つは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にバインディングが親を見つけられないため、エラーが発生したと思いますが、これらのエラーを回避するにはどうすればよいですか?? つまり、バインドの条件をどのように確立できますか??

私の 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>
. . . . . 

誰かが私を助けてくれることを願っています。

4

1 に答える 1

2

私もこの種の問題に直面しており、TargetNullValueFallbackValueを設定すると、ほとんどの場合、これらのバインディングエラーが解消されます。

<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ています。

于 2012-07-13T19:12:31.717 に答える