응용 프로그램을 실행하는 동안 수 백번 생성하는 컨트롤이 있습니다. 내 응용 프로그램이 정지 때문에를 InitializeComponent 함수에서, 이 System.Windows.Application.LoadComponent (이, 새로운 선택 System.Uri ("/ FA, 구성 요소/제어/공통/팝업/PopupItem.xaml"이 있음을 발견했습니다, System.UriKind.Relative));Silverlight 컨트롤 InitializeComponent가 응용 프로그램을 고정시킵니다.
내가 설명하면 응용 프로그램이 원활하게 실행됩니다 (물론 컨트롤이 렌더링되지 않습니다).
성능을 피하거나 높이면서 어떻게하면 XAML을로드 할 때마다, 그러나 어떻게 든 컨트롤을 재활용 할 수 있습니까 ??
for (int i = 5; i < colValues.Count; i++)
{
if (colValues[i].Count == "1")
continue;
PopupItem pi = new PopupItem(colValues[i], false, this, FilterCategorySearch.PopupContent);
FilterCategorySearch.PopupContent.spItemsContainer.Children.Add(pi);
}
와 XAML은
<UserControl x:Class="FacetedSearch.Controls.Common.Popup.PopupItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FacetedSearch.Controls.Common"
mc:Ignorable="d">
<UserControl.Resources>
<SolidColorBrush x:Key="TextNormalBrush" Color="#FF656565"/>
<SolidColorBrush x:Key="TextHoverBrush" Color="#FFA39F9F"/>
</UserControl.Resources>
<StackPanel MouseEnter="LayoutRoot_MouseEnter" MouseLeave="LayoutRoot_MouseLeave" Orientation="Horizontal" Margin="0,4,0,0">
<local:CTLCheckBox x:Name="cbFilter" MouseLeftButtonUp="cbFilter_MouseLeftButtonUp" Cursor="Hand" Height="14" Width="10" Margin="4,0" />
<TextBlock x:Name="tbFilterName" Foreground="{StaticResource TextNormalBrush}" MouseLeftButtonUp="tbFilterName_MouseLeftButtonUp" TextWrapping="Wrap" FontFamily="Arial" Margin="0,0,4,0" Cursor="Hand"/>
<TextBlock x:Name="tbFilterCount" TextWrapping="Wrap" Foreground="{StaticResource TextNormalBrush}" FontFamily="Arial"/>
</StackPanel>
감사
자주 사용하는 팝업의 내용을 설명 할 수 있습니까? 단일 공유 컨트롤의 "필요시 삽입 (insert on demand)"이 더 적절할 수있는 경우 Xaml에서 인라인으로 삽입하는 경향이 있습니다. –
내 질문에 편집 됨 – Himberjack
컨트롤에 대해 좀 더 자세히 설명해 주시겠습니까? 사용 방법은 무엇입니까? 당신이 '응용 프로그램에서 수백 번'컨트롤을 만들었다 고 말할 때 그것이 xaml에서 수백 번 사용하는 UserControl이라는 것을 의미합니까? 또는 런타임에 메시지를 사용자에게 표시하는 데 사용하는 MessageBox/ChildWindow 유형의 컨트롤입니까? –