Silverlight:禁用UI虚拟化?

gho*_*_mv 2 silverlight virtualization user-controls listbox

有没有一种简单的方法来禁用ListBox控件上的UI虚拟化?我正在尝试使用"FindName()"方法在ListBox控件中找到一个控件,但是如果控件明显偏离Web浏览器窗口,则它找不到控件.我几乎可以肯定,罪魁祸首是UI虚拟化.当控件从页面滚动时,不再通过"FindName()"成功检索它.

第二个我将它滚动回屏幕,它成功返回控件.

这是这个问题的延伸:

Silverlight:FrameworkElement.FindName()在浏览器窗口中不"可见"时找不到控件

用编码示例更新

这是我尝试检索控件的代码."DynamicTagFormFields"是ListBox控件.

textField tf = DynamicTagFormFields.FindName(s.KeyValue) as textField;
Run Code Online (Sandbox Code Playgroud)

如果我正在尝试检索的实际textField控件在屏幕上可供最终用户查看,则返回有效的"textField"对象.但是,如果我使用ListBox的垂直滚动条将textField控件滚出视图,然后再次强制进程,上述代码将返回null.

这是ListBox的XAML:

 <ListBox x:Name="DynamicTagFormFields" Margin="0" Style="{StaticResource ListBoxStyle1}" ItemContainerStyle="{StaticResource ListBoxItemStyle4}" d:LayoutOverrides="Height" Grid.Row="2" IsTabStop="False" TabNavigation="Local" ScrollViewer.HorizontalScrollBarVisibility="Disabled"/>
Run Code Online (Sandbox Code Playgroud)

使用以下代码以编程方式将textField对象动态添加到ListBox:

DynamicTagFormFields.Items.Add(textFieldControl);
Run Code Online (Sandbox Code Playgroud)

Ant*_*nes 8

你试过这个: -

<ListBox x:Name="DynamicTagFormFields" Margin="0" Style="{StaticResource ListBoxStyle1}"
    ItemContainerStyle="{StaticResource ListBoxItemStyle4}" d:LayoutOverrides="Height"
    Grid.Row="2" IsTabStop="False" TabNavigation="Local"
    ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListBox.ItemsPanel>
       <ItemsPanelTemplate>
           <StackPanel />
       </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

默认面板VirtualisingStackPanel可能是您的问题的原因.