我有一个用xaml(vb.net)编写的mainWindow,带有10个按钮,对于每个按钮,我的项目中都有一个类(带按钮......)。示例:当我单击按钮有效时,我显示在我的网格中有效的类的内容。每个类都在类mainWdow中实例化。 我在这个mainWindow上也有一个网格。 当我点击mainWindow中的一个按钮时,我想在我的网格中显示对应类的内容,当然我希望能够使用这个类(点击按钮......)。
在vb.net / xaml上执行此操作的最佳方法是什么?
在这个网页上http://msdn.microsoft.com/en-us/library/cc903947(v=vs.95).aspx有一些迹象,但这不是我想要的,因为我不想只在我的班级上显示内容,但我希望能够使用所显示的班级在我的网格上......
我感谢您的建议。
答案 0 :(得分:0)
好的,首先,您应该从MSDN上的Data Templating Overview页面了解DataTemplate
。现在这里是基本的主要内容...而不是将可重复使用的XAML放入Window
中,而是在DataTemplate
部分的Window.Resources
中声明它们:
<DataTemplate x:Key="StopDataTemplate">
<!--Define your content here-->
</DataTemplate>
<DataTemplate x:Key="ValidDataTemplate">
<!--Define your content here-->
</DataTemplate>
现在,您可以在DataTemplate
中显示这些ContentControl
的内容:
<ContentControl Name="Content" ContentTemplate="{StaticResource ValidDataTemplate}" />
然后,当您想切换到另一个视图时,只需将ContentControl.ContentTemplate
属性设置为另一个DataTemplate
(来自后面的Window
代码):
DataTemplate dataTemplate = (DataTemplate)FindResource("StopDataTemplate");
Content.ContentTemplate = dataTemplate;
答案 1 :(得分:0)
嗯,这就是我做了一些测试所做的:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Key="CBTemplate">
<Grid Height="200" HorizontalAlignment="Left" Name="centralGrid" VerticalAlignment="Top" Width="200" Background="Red">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="{Binding Title}"
Margin="10" HorizontalAlignment="Left" FontSize="20"/>
</Grid>
</DataTemplate>
然后在我的mainWindow.xaml中我有这个:
<Grid x:Name="layout" Background="LightBlue" Margin="250,150,260,380">
<ContentControl Name="Content" ContentTemplate="{StaticResource CBTemplate}" />
</Grid>
在mainWindow.vb中我有:
Class MainWindow
Private t As Thing
Sub New()
InitializeComponent()
t = New Thing("test")
layout.DataContext = t
End Sub
结束班
所以我的程序编译正确但有一点问题:text =“{Binding Title}”不起作用,当我用“toto”替换它时,没有问题toto显示... 我错过了我的代码吗?