首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Orchestra/Catel动态创建选项卡项和选项卡内容

使用Orchestra/Catel动态创建选项卡项和选项卡内容
EN

Stack Overflow用户
提问于 2020-08-16 08:11:31
回答 1查看 43关注 0票数 0

我正在尝试使用Orchestra/Catel创建选项卡式界面。我将选项卡定义加载到一个TabInfo类中。这些都很好用--创建了一个带有正确选项卡描述的选项卡式界面。在每个选项卡的内容中,我希望创建一个按钮列表-同样加载到一个ButtonInfo类中。选择选项卡时,SelectedTab属性用于选择正确的按钮列表(ShowButtons)。

我已经跟踪了该程序,当我单击选项卡时,ShowButtons中有正确的按钮集合,但选项卡内容中没有显示任何内容。我确实在一个普通的MVVM程序中得到了这个功能,但是没有标签。我使用一个列表视图来显示我的标签,使用一个ItemsControl来显示按钮。

下面是用于选项卡的XAML代码和用于拉动按钮的SelectedTab逻辑。`

代码语言:javascript
复制
<Grid>
    <orccontrols:TabControl LoadTabItems="LazyLoading" ItemsSource="{Binding TabInfo}" SelectedItem="{Binding SelectedTab}">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding TabDesc}"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate>
                <ItemsControl ItemsSource="{Binding ShowButtons}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Orientation="Vertical" IsItemsHost="True"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <Button Content="{Binding ButtonDesc}"
                                    MinWidth="150" 
                        Height="30" 
                        FontSize="12" 
                        FontWeight="Bold" 
                        Margin="0,15,25,10" 
                        Padding="5,1">
                                <Button.Style>
                                    <Style>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding OracleJob}" Value="0">
                                                <Setter Property="Button.Background" Value="DarkSalmon" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Button.Style>
                            </Button>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </DataTemplate>
        </TabControl.ContentTemplate>
    </orccontrols:TabControl>
</Grid>

以及填充ShowButtons的代码:

代码语言:javascript
复制
public void OnSelectedTabChanged()
    {
        int _selectTab = SelectedTab.TabKey;
        var _showButtons = ButtonInfo.Where(i => i.ButtonTab == _selectTab);
        ObservableCollection<ButtonRecord> _btn = new ObservableCollection<ButtonRecord>(_showButtons);
        ShowButtons = _btn;
    }

任何帮助都是非常感谢的。我是Orchestra/Catel的初学者,所以我可能错过了做这件事的最佳方式。

EN

回答 1

Stack Overflow用户

发布于 2020-08-17 16:14:57

我建议将问题从Orchestra / Catel中分离出来。Orchestra允许您提供一个shell形式的视图,但是这个视图可以独立存在( Orchestra唯一要做的就是将它放在shell中的正确位置)。通过使这个问题与Orchestra无关,它使我们更容易解决它。

接下来,我建议您查看Catel文档。这里有一个完整的示例,说明如何显示带有可关闭选项卡按钮的选项卡的shell,请参阅https://docs.catelproject.com/vnext/tips-tricks/mvvm/using-tabbed-interface-with-mvvm/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63431931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档