0

我写了一个矢量编辑器。在我开始使用 TabControl 之前,一切都对我有用。但是,有必要同时上传几个打开的文件。每个打开的文件都显示在 TabItem 上。由于在论坛上聊天,我发现您需要创建一个 MVVM 才能正确显示来自不同不同文件的数据。有人建议我为所有选项卡设置一个通用模板。通过将项目添加到 TabControl 链接到的集合中,将使用此模板自动创建选项卡。我做了以下事情:

<TabControl x:Name="Drawing_TabControl" Grid.Row="0" Background="WhiteSmoke"
                    SelectionChanged="Drawing_TabControl_SelectionChanged">
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <Grid x:Name="Drawing_Grid_Tab"
                          Background="WhiteSmoke">
                        <Canvas x:Name="coordinateCanvas_Tab"
                                Background="GhostWhite"
                                Height="6cm"
                                Width="16cm"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"></Canvas>
                        <Canvas x:Name="gridCanvas_Tab"
                                Background="Transparent"
                                Height="6cm"
                                Width="16cm"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                SizeChanged="gridCanvas_SizeChanged"></Canvas>
                        <Border x:Name="drawing_Border_Tab"
                                BorderBrush="Black"
                                BorderThickness="0.5 0.5 0.5 0.5"
                                Height="4cm"
                                Width="14cm"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"></Border>
                        <Canvas x:Name="drawing_gridCanvas_Tab"
                                Background="White"
                                Height="4cm"
                                Width="14cm"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"></Canvas>
                        <Canvas x:Name="drawing_tempCanvas_Tab"
                                Background="Transparent"
                                Height="4cm"
                                Width="14cm"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"></Canvas>
                        <Canvas x:Name="drawingCanvas_Tab"
                                Background="Transparent"
                                Height="4cm"
                                Width="14cm"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                ClipToBounds="True"></Canvas>
                    </Grid>
                </DataTemplate>
            </TabControl.ContentTemplate>
            <TabItem x:Name="drawTabItem1"
                     Header="Макет_1" Background="WhiteSmoke">
            </TabItem>
        </TabControl>[enter image description here][1]

例如,我如何x:Name="coordinateCanvas_Tab"在后面的代码中访问?

4

1 回答 1

0

如果您已被告知并已实施该建议以更改为 MVVM 代码结构,那么您将不再直接从代码隐藏文件访问 XAML 组件。相反,您需要在您的 View XAML 和您正在使用的 ViewModel 之间建立双向绑定。

这主要是通过在您的构造函数代码中初始化屏幕后在视图中使用 BindingContext 对象来完成的。

之后,您可以将值分配给 ViewModel 中的 Collection 对象,并在 XAML 中绑定到它。要执行您想要的动态选项卡插入,您可以使用 BindableLayout 属性,然后在 ItemTemplate 中为集合对象中的每个选项卡绑定值。

请查看本指南以更好地了解绑定。

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/data-bindings-to-mvvm

于 2020-04-23T10:53:32.360 回答