동일한 ViewModel 클래스를 사용하는 2 개의 XAML, 그러나 2 개의 개별 인스턴스

분리

나는 크고 긴 xaml이 있습니다. 그런 다음 xaml의 메뉴 부분에 대한 UserControl을 만들어 깔끔하게 만들었습니다. 기본 xaml 코드 숨김에서 ViewModel 클래스를 인스턴스화하고 기본 xaml의 DataContext로 설정했습니다. 기본 및 메뉴 xaml이 서로 통신 할 수 있도록 메뉴 코드 숨김의 데이터 컨텍스트와 동일한 뷰 모델을 사용하기로 선택했습니다. 다른 ViewModel 클래스를 인스턴스화했습니다. 내 코드는 지금까지 잘 작동합니다.

그러나 나는이 일을 제대로하고 있지 않다고 느낍니다. ViewModel 인스턴스의 인스턴스가 하나만 필요하다고 생각합니다. 하지만 main.xaml.cs와 menu.xaml.cs는 서로를 모르기 때문에 인스턴스를 공유하는 방법을 모릅니다.

Aybe

App.xaml.cs에 속성을 추가 한 다음 컨트롤에서 바인딩 할 수 있습니다.

첫 번째 접근 방식 : XAML 리소스로

모델 :

public class MyViewModel
{
    public int Hello { get; set; }    
}

App.xaml.cs :

<Application x:Class="WpfApplication12.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:wpfApplication12="clr-namespace:WpfApplication12"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <wpfApplication12:MyViewModel x:Key="MyViewModel" />
    </Application.Resources>
</Application>

작은 참고 : x:Shared="True"기본값이므로 객체에 주석을 달 필요가 없으며 동일한 인스턴스가 반환됩니다. http://msdn.microsoft.com/en-us/library/aa970778.aspx

사용자 제어 :

<UserControl x:Class="WpfApplication12.UserControl2"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid DataContext="{Binding Mode=OneWay, Source={StaticResource MyViewModel}}">
        <TextBlock Text="{Binding Path=Hello}" />
    </Grid>
</UserControl>

이제 모델이 리소스이므로 속성을 만들어 검색 할 수 있습니다.

public MyViewModel MyViewModel
{
    get { return Application.Current.FindResource("MyViewModel") as MyViewModel; }
}

(하지만 해당 참조를 필드에 저장하는 것이 좋습니다.)

두 번째 접근 방식 : 기존 속성으로

어떤 이유로 기존 속성을 선호하는 경우 구문은 다음과 같습니다.

속성은 정적이며 정적 생성자에서 초기화됩니다.

public partial class App : Application
{
    static App()
    {
        MyViewModel = new MyViewModel();
    }

    public static MyViewModel MyViewModel { get; set; }
}

사용자 정의 컨트롤에 바인딩 :

<Grid DataContext="{Binding Source={x:Static wpfApplication12:App.MyViewModel}}"/>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동일한 테이블의 인스턴스 2 개를 사용하는 방법

분류에서Dev

동일한 프로그램의 2 개 인스턴스 열기

분류에서Dev

C # 2 개의 클래스에서 개체 / 인스턴스의 값을 참조 / 사용 / 설정하는 방법

분류에서Dev

2 개의 다른 인스턴스는 동일한 값을 유지합니다.

분류에서Dev

Java 상속 : 2 개의 하위 클래스에 대해 동일한 상위 클래스의 객체 인스턴스

분류에서Dev

2 개의 사이트 인스턴스를 사용한 Google Analytics a / b 테스트.

분류에서Dev

jQuery에서 2 개의 반복되는 클래스를 둘러싼 클래스

분류에서Dev

angularjs 동일한 모듈에 대해 2 개의 개별 페이지에 2 개의 개별 컨트롤러를 라우팅하는 방법

분류에서Dev

두 개의 서브넷이있는 하나의 EC2 인스턴스 Terraform

분류에서Dev

Xamarin.Froms-viewmodel 생성자에서 2 개의 서비스 인스턴스화

분류에서Dev

2 개의 클래스를 별도의 .h 파일로 분리하고 올바르게 설정하는 방법

분류에서Dev

Linq를 사용하여 한 클래스에 2 개 이상의 고유 항목이 있는지 확인

분류에서Dev

동일한 색상 스케일로 2 개의 개별 ggplot 생성

분류에서Dev

Google App Engine에서 2 개의 Memcache 클래스를 인스턴스화 할 수 있나요?

분류에서Dev

2 개의 서버에서 동일한 SSL 인증서, 1 개의 패스 및 기타는 그렇지 않음

분류에서Dev

2 개의 텍스트 파일을 하나의 동일한 줄로 병합

분류에서Dev

xpath를 사용하여 2 개의 특정 단어 중 하나를 포함하는 내부 클래스 제외

분류에서Dev

Java-동일한 파일에 2 개의 클래스를 포함하는 방법은 무엇입니까?

분류에서Dev

동일한 클래스의 여러 개체가 개체 중 하나만 참조

분류에서Dev

생성자 인수가 다른 동일한 클래스의 빈 2 개 생성 및 자동 연결 사용

분류에서Dev

terraform을 사용하여 vpc 아래에 두 개의 ec2 인스턴스를 생성하려는 경우

분류에서Dev

C #에서 동일한 클래스의 여러 개체 인스턴스를 동적으로 생성

분류에서Dev

동일한 객체 컨텍스트 2 두 개의 개별 뷰 컨트롤러 전달

분류에서Dev

녹아웃을 사용하여 동일한 viewModal의 두 개의 다른 인스턴스를 두 개의 별개의 div에 바인딩 할 때 충돌

분류에서Dev

Spring 구성 : 동일한 클래스 참조를 가진 2 개의 빈

분류에서Dev

스칼라에서 2 개의 케이스 클래스 인스턴스 비교

분류에서Dev

2 개의 다른 파일에서 2 개의 클래스를 조롱

분류에서Dev

CSS : 클래스없이 두 개의 동일한 태그를 구별하는 방법은 무엇입니까?

분류에서Dev

동일한 텍스트가 2 개의 다른 xpath 아래에 나타나는지 확인

Related 관련 기사

  1. 1

    동일한 테이블의 인스턴스 2 개를 사용하는 방법

  2. 2

    동일한 프로그램의 2 개 인스턴스 열기

  3. 3

    C # 2 개의 클래스에서 개체 / 인스턴스의 값을 참조 / 사용 / 설정하는 방법

  4. 4

    2 개의 다른 인스턴스는 동일한 값을 유지합니다.

  5. 5

    Java 상속 : 2 개의 하위 클래스에 대해 동일한 상위 클래스의 객체 인스턴스

  6. 6

    2 개의 사이트 인스턴스를 사용한 Google Analytics a / b 테스트.

  7. 7

    jQuery에서 2 개의 반복되는 클래스를 둘러싼 클래스

  8. 8

    angularjs 동일한 모듈에 대해 2 개의 개별 페이지에 2 개의 개별 컨트롤러를 라우팅하는 방법

  9. 9

    두 개의 서브넷이있는 하나의 EC2 인스턴스 Terraform

  10. 10

    Xamarin.Froms-viewmodel 생성자에서 2 개의 서비스 인스턴스화

  11. 11

    2 개의 클래스를 별도의 .h 파일로 분리하고 올바르게 설정하는 방법

  12. 12

    Linq를 사용하여 한 클래스에 2 개 이상의 고유 항목이 있는지 확인

  13. 13

    동일한 색상 스케일로 2 개의 개별 ggplot 생성

  14. 14

    Google App Engine에서 2 개의 Memcache 클래스를 인스턴스화 할 수 있나요?

  15. 15

    2 개의 서버에서 동일한 SSL 인증서, 1 개의 패스 및 기타는 그렇지 않음

  16. 16

    2 개의 텍스트 파일을 하나의 동일한 줄로 병합

  17. 17

    xpath를 사용하여 2 개의 특정 단어 중 하나를 포함하는 내부 클래스 제외

  18. 18

    Java-동일한 파일에 2 개의 클래스를 포함하는 방법은 무엇입니까?

  19. 19

    동일한 클래스의 여러 개체가 개체 중 하나만 참조

  20. 20

    생성자 인수가 다른 동일한 클래스의 빈 2 개 생성 및 자동 연결 사용

  21. 21

    terraform을 사용하여 vpc 아래에 두 개의 ec2 인스턴스를 생성하려는 경우

  22. 22

    C #에서 동일한 클래스의 여러 개체 인스턴스를 동적으로 생성

  23. 23

    동일한 객체 컨텍스트 2 두 개의 개별 뷰 컨트롤러 전달

  24. 24

    녹아웃을 사용하여 동일한 viewModal의 두 개의 다른 인스턴스를 두 개의 별개의 div에 바인딩 할 때 충돌

  25. 25

    Spring 구성 : 동일한 클래스 참조를 가진 2 개의 빈

  26. 26

    스칼라에서 2 개의 케이스 클래스 인스턴스 비교

  27. 27

    2 개의 다른 파일에서 2 개의 클래스를 조롱

  28. 28

    CSS : 클래스없이 두 개의 동일한 태그를 구별하는 방법은 무엇입니까?

  29. 29

    동일한 텍스트가 2 개의 다른 xpath 아래에 나타나는지 확인

뜨겁다태그

보관