2017-10-13 5 views
0

Caliburn.Micro에서 Child View (ViewModel)의 Parent 속성을 바인딩하려고합니다.자식보기의 Caliburn.Micro 바인딩 부모 속성입니다. (UWP)

첫 번째 예는 간단합니다.

이것은 하위보기 (XAML)입니다.

<UserControl 
x:Class="Bg7Uwp1.Views.App.DerLayout.Der2View" 
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:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" 
xmlns:micro="using:Caliburn.Micro" 
xmlns:local="using:Bg7Uwp1.Controls" 
mc:Ignorable="d" 
x:Name="RootDer2"> 

<TextBlock Text="{Binding DataContext.hello, ElementName=RootDer2}"/> 

이것은 하위보기 모델입니다.

public class Der2ViewModel : Conductor<Screen> 
{ 
    public Der2ViewModel() 
    { 
    } 
} 

상위 뷰 모델입니다.

public string _hello = "HELLOWORLD!"; 
    public string hello 
    { 
     get { return _hello; } 
     set 
     { 
      this.Set(ref _hello, value); 
     } 
    } 

이것은 상위보기입니다.

<UserControl 
x:Class="Bg7Uwp1.Views.App.SpectrumView" 
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:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" 
xmlns:micro="using:Caliburn.Micro" 
xmlns:local="using:Bg7Uwp1.Controls" 
mc:Ignorable="d" 
x:Name="Root" 
d:DesignHeight="800" 
d:DesignWidth="1000"> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

    <ContentControl x:Name="ActiveItem" 
        Grid.Row="0" 
        HorizontalContentAlignment="Stretch" 
        VerticalContentAlignment="Stretch"/> 

</Grid> 
</UserControl> 

위의 예는 그 예입니다. 나는 간단한 것을 사용했다. 나는 "x : Name"없이 묶고 싶다. "TextBlock"이 최종 바인딩 대상이기 때문입니다. ChildView에서 사용자 지정 컨트롤을 바인딩하고 싶습니다.

이것은 하위 뷰의 현재 CustomControl입니다.

 <local:SensorMeter 

     x:Name="DerRMeter" 
     HorizontalAlignment="Center" 
     DerThreashold1Svh="{Binding DerMeters[1].DerThreashold1Svh, ElementName=RootDer2}" 
     DerThreashold2Svh="{Binding DerMeters[1].DerThreashold2Svh, ElementName=RootDer2}" 
     DerSvh="{Binding DerMeters[1].DerSvh, ElementName=RootDer2}" 
     Title="{Binding DataContext.DerMeters[1].Title, ElementName=RootDer2}" 
     connectionDeviceStatusEnum="{Binding DerMeters[1].connectionDeviceStatusEnum, ElementName=RootDer2}" 
     ticketThresholdType="{Binding DerMeters[1].ticketThresholdType, ElementName=RootDer2}" 
     device="{Binding DerMeters[1].device, ElementName=RootDer2}" 
     micro:Message.Attach="[Event DoubleTapped]=[Action Click_DoubleTapped(1)];[Event Tapped]=[Action Click_Tapped(1)]"  

     /> 

이것은 현재 부모보기 모델입니다.

public ObservableCollection<DerMeter> DerMeters 
    { 
     get { return _derMeters; } 
     set 
     { 
      this.Set(ref _derMeters, value); 
     } 
    } 

어떻게 아이보기에 "Parent 속성을"결합하는 질문 ??

나는 몇 가지 유용한 링크를 발견 ...하지만 난 아직 할 수 없습니다 ...

+0

문제를 재현 할 수있는 [MCVE]를 (를) 공유해주세요. – Scavenger

답변

0

내가 게시 한 대답은 GitHub이지만 그 주안점은 상자 밖의 ScreenConductor 클래스이면보기 모델 부모 도체의 속성에 대한 바인딩을 만드는 데 사용할 수있는 Parent 속성이보기 모델에 포함됩니다.

관련 문제