0

截屏

什么会导致第三列中表现出的行为?

显示的数据是存储在集合中的对象的随机创建的字段。集合被填充后,集合被绑定在 Main Page 构造函数中。我已经在调试中多次单步执行该应用程序,并且正在为每一行/对象重新生成数据。但是如果我只是在没有调试的情况下运行,我会得到这种行为。从第二个项目开始的第三个属性/列会重复。

相关 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));
    }

跨浏览器的行为是一致的。

附加信息 ---

当我使用调试逐步完成此操作时,我没有得到这种行为。第三列生成一个预期的唯一字符字符串。

所以,我的问题是......我的 MainPage 如何在完成初始化之前将 MyClass 对象添加到 MyList 中?

4

1 回答 1

0

与朋友的深夜调试会议表明我的代码并不太慢。他强调了这样一个事实,即第三列最终确实会生成一个新代码,但不是每次都生成。

简短的回答,一个私有的 Random 类级对象没有结束。通过将 Random 对象设为静态,该类开始按预期运行。

于 2013-01-11T14:28:19.207 回答