0

私たちのアプリケーションでは、ユースケースに基づいて実行時にいくつかの DataTemplates を動的に読み込みます。そして、これらの DataTemplate は DataTemplates の別のレイヤーを参照し、これは 2 つまたは 3 つのレイヤーに続く可能性があります。多くの DataTemplate 定義があるため、下位層の DataTemplate の 1 つを定義し忘れる可能性があります。

悪い点は、VisualStudio が欠落している DataTemplate を警告せず、関連する警告なしでビルドが正常に行われ、実行時に例外がスローされることです。

コンパイラの支援がなければ、バグのないコードを取得するのは純粋に人間の努力です。未定義だが参照されている DataTemplate を検出するのに役立つツールはありますか?

どうもありがとう。

たとえば、次の簡略化された XAML は問題を示しています。Layer1 DataTemplates は、Layer2 DataTemplates を参照します。Layer1_0x00010D83_Layer2List_0x00010712_0x00010719 は実行時に動的にロードされ、Layer2_0x00010712 および Layer2_0x00010719 を参照します。Layer2_0x00010719 が定義されていない場合、コンパイルは問題なく実行されますが、実行時にエラーがスローされます。

    <DataTemplate  x:Key="Layer2_0x00010712">
        <StackPanel >
            <TextBlock Text="{Binding Converter={StaticResource NameConverter}}"
                       Style="{StaticResource NameTextBlockStyle}"  />
        </StackPanel>
    </DataTemplate>

    <DataTemplate x:Key="Layer1_0x00010D83_Layer2List_0x00010712_0x00010719">
        <local:Layer1Border x:Name="" Layer1ID="0x00010D83" >
            <Grid>
                <local:Layer2Border Grid.Column="0" Grid.Row="1"
                    <Button Content="{Binding}" ContentTemplate="{StaticResource Layer2_0x00010712}"/>
                </local:Layer2Border>
                <local:Layer2Border Grid.Column="1" Grid.Row="1"
                    <Button Content="{Binding}" ContentTemplate="{StaticResource Layer2_0x00010719}"/>
                </local:Layer2Border>
            </Grid>
        </local:Layer1Border>
    </DataTemplate>
4

0 に答える 0