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)
你试过这个: -
<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可能是您的问题的原因.
| 归档时间: |
|
| 查看次数: |
2040 次 |
| 最近记录: |