0

スクリーンショット

3 番目の列に示されている動作の原因は何ですか?

表示されるデータは、コレクションに格納されたオブジェクトのランダムに作成されたフィールドです。コレクションが満たされた後、コレクションは Main Page コンストラクターにバインドされます。デバッグで何度もアプリをステップ実行しましたが、行/オブジェクトごとにデータが再生成されています。しかし、デバッグせずに単純に実行すると、この動作が発生します。2 番目の項目から 3 番目のプロパティ/列が繰り返されます。

関連する XAML:

<sdk:DataGrid AutoGenerateColumns="False" Grid.Column="1" Grid.Row="1" Height="400" HorizontalAlignment="Left" Margin="0,26,0,0" Name="dgList" VerticalAlignment="Top">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn Binding="{Binding Location}" CanUserResize="True" Width="Auto" x:Name="objLocation" />
        <sdk:DataGridTextColumn Binding="{Binding Name}"  CanUserResize="True" Width="Auto" x:Name="objName" />
        <sdk:DataGridTextColumn Binding="{Binding UPC}" CanUserResize="True" Width="Auto" x:Name="objUPC" />
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

Main_Page コード ビハインド:

    public Collection<MyClass> myList;

    public MainPage()
    {
        InitializeComponent();
        myList = new Collection<MyClass>();
        CreateHexGrid(8, 10, 30);
        dgList.ItemsSource = myList;
   }

...

    private void AddObjects(Point[, ,] HexPoint, int columns, int rows, double length)
    {
                    ....
                    string loc = col.ToString() + row.ToString();
                    myList.Add(new MyClass(loc));
    }

動作はブラウザ間で一貫しています。

追加情報 ---

デバッグを使用してこれをステップ実行すると、この動作が得られません。3 番目の列は、期待どおりの一意の文字列を生成します。

それで、私の質問は...初期化が完了する前に、私の MainPage が MyClass オブジェクトを MyList にどのように追加していますか?

4

1 に答える 1

0

友人との深夜のデバッグ セッションで、私のコードがそれほど遅くないことがわかりました。彼は、3 番目の列が最終的に新しいコードを生成するという事実に注目しましたが、毎回ではありません。

簡単に言えば、プライベート Random クラス レベル オブジェクトがティック オーバーしていませんでした。Random オブジェクトを静的にすることで、クラスは期待どおりに動作するようになりました。

于 2013-01-11T14:28:19.207 に答える