代码之家  ›  专栏  ›  技术社区  ›  Sei

Avalonia/WPF将路由器传递到控制模板

  •  0
  • Sei  · 技术社区  · 5 月前

    长话短说,我有一个Avalonia项目,我正在使用 SimpleRouter 库实现路由。该代码与完整的代码示例非常相似,使用 ServiceCollection 我可以访问 HistoryRouter<ViewModelBase> 路由器在我的 MainViewModel .

    我也有一个 ControlTemplate 这意味着为一些但不是全部页面提供可重用的功能。该功能包括转到上一页,这意味着我想使用路由器的 GoBack() 这个方法。不幸的是,我完全不知道如何将路由器或ServiceCollection传递到组件中,以便使用该方法。在互联网上搜索对于建议我需要做什么没有多大帮助。

    组件示例:

    <Styles>
        <Style Selector="controls|MyComponent">
            <Setter Property="Template">
                <ControlTemplate>
                    <StackPanel>
                        <Button>Go Back</Button>
                        <ContentPresenter Content="{TemplateBinding Content}"/>
                    </StackPanel>
                </ControlTemplate>
            </Setter>
        </Style>
    </Styles>
    

    PageView示例:

    <UserControl x:Class="Project.Views.SomePageView">
        <StackPanel>
            <controls:MyComponent/>
            <TextBlock Text="Some Content" />
        </StackPanel>
    </UserControl>
    

    在不破坏任何设计模式的情况下,实现我想要的东西的正确方法是什么?任何帮助都将不胜感激。

    0 回复  |  直到 5 月前