내부에 StackLayout이있는 Frame이 있습니다.
<Frame CornerRadius="1" HasShadow="false" Margin="10"
BackgroundColor="White" BorderColor="Silver" Padding="0" >
<StackLayout Orientation="Vertical" Spacing="0" Padding="0" >
<xaml:PtiXaml />
<template:LineTemplate />
<xaml:AtiXaml />
<template:LineTemplate />
<xaml:StiXaml />
</StackLayout>
</Frame>
StackLayout이 내부에있는 Frame과 동일한 NewFrame이라는 새 객체를 만들 수 있습니까?
<template:NewFrame>
<xaml:PtiXaml />
<template:LineTemplate />
<xaml:AtiXaml />
<template:LineTemplate />
<xaml:StiXaml />
</template:NewFrame>
또는
<template:NewFrame>
<xaml:ABCXaml />
</template:NewFrame>
또는
<template:NewFrame>
<Label Text="X" />
</template:NewFrame>
그것은 사용자 정의보기를 사용하는 것이 좋습니다하지만 내가 보았고이 안에 다른 요소가 들어있는이 예제를 찾을 수 없습니다.
솔루션 탐색기에서 공유 프로젝트 (또는 PCL)의 원하는 위치를 마우스 오른쪽 단추로 클릭하십시오 ( "Views"또는 "CustomViews"라는 폴더를 추가하고 해당 폴더 내에 항목을 만드는 것이 좋습니다). "Add new item"을 선택하고 (C #)없이 "Content View"를 선택하십시오. 파일 이름은 "View1.xaml"과 같아야합니다. 원하는대로 변경할 수 있지만 중요한 것은 xaml 확장자가 있다는 것입니다.
이렇게하면 xaml 및 xaml.cs 파일로 새로운 ContentView가 만들어집니다. xaml 파일 안에 xaml 코드를 선언하고 필요한 코드를 xaml.cs 파일에 쓸 수 있습니다.
이제 뷰를 넣을 페이지에 네임 스페이스 선언을 추가 할 수 있습니다.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
...
xmlns:customs="clr-namespace:YourNamespace.Views;assembly=YourNamespace"
페이지 또는 레이아웃의 내용에서 요소를 선언하십시오.
<customs:CustomViewName ... />
요소의 비헤이비어를 제어 할 수 있도록하려면 코드 숨김에 BindableProperties를 추가 할 수 있습니다.
자세한 내용은이 기사를 참조하십시오.https://visualstudiomagazine.com/articles/2017/10/01/add-custom-controls.aspx
사용ContentView
함께ControlTemplate
사용자 정의 컨트롤을 만들 수 있습니다. 이렇게하면 다음과 같은 새 컨트롤을 만들 수 있습니다.NewFrame
컨트롤을위한 XAML을 작성한 다음<ContentPresenter>
내부 태그<ControlTemplate>
콘텐츠를 원하는 위치를 지정할 수 있습니다.
이렇게 :
.
└── NewFrame
├── NewFrame.cs
└── NewFrame.xaml -> Is a ResourceDictionary
NewFrame.cs :
namespace TestApp.Controls
{
public partial class NewFrame : ContentView
{
}
}
NewFrame.xaml :
<ResourceDictionary
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:newFrame="clr-namespace:TestApp.Controls"
x:Class="Namespace.For.A.ResourceDictionary">
<Style TargetType="newFrame:NewFrame">
<Setter Property="ControlTemplate">
<Setter.Value>
<ControlTemplate>
<ContentView BackgroundColor="Transparent">
<Frame CornerRadius="1" HasShadow="false" Margin="10" BackgroundColor="White" BorderColor="Silver" Padding="0" >
<StackLayout Orientation="Vertical" Spacing="0" Padding="0">
<ContentPresenter/>
</StackLayout>
</Frame>
</ContentView>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
ConsouringYourControl.xaml :
<template:NewFrame>
<template:NewFrame.Content>
<xaml:PtiXaml />
<template:LineTemplate />
<xaml:AtiXaml />
<template:LineTemplate />
<xaml:StiXaml />
</template:NewFrame.Content>
</template:NewFrame>
<template:NewFrame>
<template:NewFrame.Content>
<xaml:ABCXaml />
</template:NewFrame.Content>
</template:NewFrame>
<template:NewFrame>
<template:NewFrame.Content>
<Label Text=""/>
</template:NewFrame.Content>
</template:NewFrame>
ContentProperty
속성? - Tom