Можете ли вы окружить содержимое пользовательским представлением

#c# #xaml #xamarin #xamarin.forms #controltemplate

#c# #xaml #xamarin #xamarin.forms #controltemplate

Вопрос:

У меня есть куча кода на странице, который я хотел бы повторно использовать на нескольких страницах

     <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
        <SwipeView x:Name="MainSwipeView" BackgroundColor="Transparent"
                   SwipeStarted="SwipeStarted" SwipeEnded="SwipeEnded" VerticalOptions="FillAndExpand">
            <SwipeView.LeftItems>
            </SwipeView.LeftItems>
            <Grid x:Name="swipeContent">
  


                Where I want the rest of the content to be 
                (This means this would surround the content, similar to <ContentPresenter/> in a ControlTemplate)
  


            </Grid>
        </SwipeView>
        <StackLayout HeightRequest="50" BackgroundColor="Red">
            <Label> Where the Augnito Button will be </Label>
        </StackLayout>
    </StackLayout>
  

Я хотел поместить это в повторно используемый компонент, чтобы я мог использовать его на других страницах следующим образом:

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 . 
                 .
                 .
                 .>
    <MyReusableComponent>
         <StackLayout>

                 This is where the regular contents of a page would go

        </StackLayout>
    </MyReusableComponent>
</ContentPage>
  

Я не думаю, что смогу использовать ControlTemplate , потому что в моем пользовательском представлении есть код в файле xaml.cs, чтобы заставить его работать, так есть ли другой способ сделать это?

Комментарии:

1. используйте contentView

2. @Jason Не могли бы вы подробнее рассказать об этом? Как я мог бы сделать так, чтобы макет стека, который я показал на второй диаграмме, отображался внутри сетки SwipeContent в пользовательском представлении? Вы все еще используете ContentPresenter?

3. contentView — это просто элемент XAML, который содержит другие элементы, и вы можете использовать его в любом месте, где вы использовали бы любой элемент XAML. В документах есть примеры: learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface /…

4. @Jason Но как вложенный элемент узнает, что он должен отображаться встроенным внутри элемента сетки swipeContent, который находится внутри CustomView? Обязательно ли помещать ContentPresenter внутри сетки swipeContent?

5. Итак, вы хотите повторно используемый элемент управления, который может содержать другое содержимое, то есть создавать свой собственный шаблон?