Code/WPF

WPF UI Freeze 오류

Segel 2021. 7. 10. 23:03

문제:

    1. 아래 Template를 여러 윈도우에 삽입하여 사용

    2. Task를 200개 정도 실행

    3. IsMouseOver Trigger의 ImageBrush가 로드될 때 프리징이 걸림

       (BitmapImage.CreateOption을 DelayCreation으로 할 시 마우스를 컨트롤로 움직여야 프리징이 걸림 -> 해당 부분의 문제인 것 같음)

        <ImageBrush x:Key="Down" ImageSource="LoaderListCtrl\Icon\Dwn.png" Stretch="Fill"/>
        <ImageBrush x:Key="Up" ImageSource="LoaderListCtrl/Icon/Up.png" Stretch="Fill"/>
        <ControlTemplate x:Key="BtnUp" TargetType="Button">
            <Border Name="border" BorderThickness="0" 
                    Background="{StaticResource Up}">
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" TargetName="border">
                        <Setter.Value>
                            <ImageBrush ImageSource="LoaderListCtrl/Icon/UpOver.png" Stretch="Fill" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
        <ControlTemplate x:Key="BtnDown" TargetType="Button">
            <Border Name="border" BorderThickness="0" 
                    Background="{StaticResource Down}">
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" TargetName="border">
                        <Setter.Value>
                            <ImageBrush ImageSource="LoaderListCtrl/Icon/DownOver.png" Stretch="Fill" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

 

임시 해결:

    같은 코드를 여러 곳에 집어넣지 않고 App.xaml에 넣어 두고 여러 곳에서 호출해서 사용하면 프리징에 걸리지 않음

 

기타:

    왜 오류가 나는지 모르겠음

반응형