我写的是一个矢量编辑器。在我开始使用TabControl之前,一切都能正常工作。然而,有必要同时上传几个打开的文件。每个打开的文件都显示在TabItem上。通过在论坛上的聊天,我发现你需要创建一个MVVM来正确显示不同文件的数据。有人建议我为所有的Tab设置一个通用的模板。将项目添加到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"
比如说,在后面的代码中?
如果你已经被建议并且已经实现了这个建议,改变为MVVM代码结构,那么你就不能再直接从文件后面的代码中访问XAML组件了.相反,你需要在你的View XAML和你正在使用的ViewModel之间进行双向绑定。
这主要是通过在您的构造函数代码中初始化屏幕后,利用视图中的BindingContext对象来完成的。
之后你就可以在你的ViewModel中给一个Collection对象赋值,并在XAML中绑定到它。要做你想做的动态标签插入,你可以利用BindableLayout属性,然后在ItemTemplate中为每个标签绑定来自集合对象的值。
请看一下这个指南,以便更好地理解Bindings。
https:/docs.microsoft.comen-usxamarinxamarin-formsxamlxaml-basicsdata-bindings-to-mvvm。