显示内容类xaml vb.net

时间:2014-06-24 13:36:50

标签: wpf vb.net xaml

我有一个用xaml(vb.net)编写的mainWindow,带有10个按钮,对于每个按钮,我的项目中都有一个类(带按钮......)。示例:当我单击按钮有效时,我显示在我的网格中有效的类的内容。每个类都在类mainWdow中实例化。 我在这个mainWindow上也有一个网格。 当我点击mainWindow中的一个按钮时,我想在我的网格中显示对应类的内容,当然我希望能够使用这个类(点击按钮......)。

在vb.net / xaml上执行此操作的最佳方法是什么?

在这个网页上http://msdn.microsoft.com/en-us/library/cc903947(v=vs.95).aspx有一些迹象,但这不是我想要的,因为我不想只在我的班级上显示内容,但我希望能够使用所显示的班级在我的网格上......

我感谢您的建议。

2 个答案:

答案 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显示... 我错过了我的代码吗?