문제

모든 WPF 페이지에 라우트된 이벤트를 등록해야 한다고 결정했습니다.포함하기보다는

public static readonly RoutedEvent MyEvent= EventManager.RegisterRoutedEvent("MyEvent", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(BasePage));

모든 페이지에 기본 페이지(BasePage라는 이름)를 만들기로 결정했습니다.위 코드 줄을 기본 페이지에 넣은 다음 다른 페이지 몇 개를 BasePage에서 파생되도록 변경했습니다.이 오류를 지나칠 수 없습니다.

오류 12 'cts.idocv7.basepage'는 XAML을 사용하여 정의되었으므로 XAML 파일의 루트가 될 수 없습니다.라인 1 위치 22.C:\Work\iDoc7\CTS.iDocV7\UI\Quality\QualityControlQueuePage.xaml 1 22 CTS.iDocV7

WPF 페이지에서 사용할 수 있는 이벤트, 속성, 메서드 등을 넣을 수 있는 경우 기본 페이지를 가장 잘 만드는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

현재 프로젝트에서 이 작업을 수행한 방법은 다음과 같습니다.

먼저 다음과 같은 클래스를 정의했습니다(@Daren Thomas가 말했듯이 - 그냥 평범한 오래된 C# 클래스이고 관련 XAML 파일 없음). (네, 이것은 실제 클래스입니다 - 묻지 않는 것이 가장 좋습니다):

public class PigFinderPage : Page
{
    /* add custom events and properties here */
}

그런 다음 새 페이지를 만들고 XAML 선언을 다음과 같이 변경합니다.

<my:PigFinderPage x:Class="Qaf.PigFM.WindowsClient.PenSearchPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:Qaf.PigFM.WindowsClient"
    />

그래서 "my" 네임스페이스에 PigFinderPage로 선언합니다.필요한 페이지 전체 리소스는 유사한 구문을 사용하여 선언해야 합니다.

<my:PigFinderPage.Resources>
    <!-- your resources go here -->
</my:PigFinderPage.Resources>

마지막으로, 이 새 페이지의 코드 숨김으로 전환하고 다음과 같이 페이지에서 직접 파생되는 것이 아니라 사용자 정의 클래스에서 파생되도록 클래스 선언을 변경합니다.

public partial class EarmarkSearchPage : PigFinderPage

부분 클래스로 유지하는 것을 잊지 마세요.

그것은 나에게 좋은 일입니다. "PigFinderPage"에서 여러 사용자 정의 속성과 이벤트를 다시 정의하고 모든 하위 항목에서 사용할 수 있습니다.

다른 팁

또한 다음을 살펴보십시오. 첨부된 이벤트 앱의 모든 페이지에 이벤트를 첨부할 수 있는지 확인하세요.사용자 정의 중개 클래스보다 쉬울 수 있습니다.

이것에 대해서는 잘 모르겠지만 오류를 살펴보면 C#(.cs) 코드만으로 기본 클래스를 정의하려고 합니다. XAML로 클래스를 만들지 말고 WPF 페이지를 확장하는 표준 .cs 파일만 사용하면 됩니다. 수업.

여기 튜토리얼이기도 합니다!꽤 간단하고 쉽습니다.

작은 업데이트:방금 하려고 했는데 잘 안 됐어요.그는 문제를 해결하기 위해 내가 바꾼 사람입니다.

1. 많은 포럼에서 하위 페이지가 XAML 없이 간단한 cs 클래스에서 상속되어야 한다는 내용을 읽게 됩니다.작동하지만.아무런 문제 없이 일반 XAML 페이지에서 상속됩니다.

2. 다음 코드를 교체했습니다.

<my:PigFinderPage x:Class="Qaf.PigFM.WindowsClient.PenSearchPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:Qaf.PigFM.WindowsClient"
/>

~와 함께

<my:PigFinderPage x:Class="Qaf.PigFM.WindowsClient.PenSearchPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="using:Qaf.PigFM.WindowsClient"
/>

왜냐하면 "using" 대신 "clr-namespace"가 있으면 Intellisense는 PigFinderPage를 인식할 수 있지만 컴파일러는 인식할 수 없기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top