在c#中将Canvas和TextBlocks添加到巨型Button

时间:2016-05-03 19:31:04

标签: c# wpf xaml button wpf-controls

我希望能够为我的ItemsControl添加巨型按钮。巨型按钮应该包含一个包含多个TextBlocks的Canvas,就像下面的XAML代码中的Button一样:

<DockPanel>
    <Button DockPanel.Dock="Right" Click="add_Click">Add</Button>

    <ItemsControl Name="itemsControl">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <Button Width="450" Height="150" Margin="5" Name="button1" Background="DarkGreen">
            <Canvas>
                <TextBlock Canvas.Right="80" Canvas.Bottom="30" Background="RoyalBlue" Width="60" TextAlignment="Center" Name="person1">OR1</TextBlock>
                <TextBlock Canvas.Right="10" Canvas.Bottom="30" Background="SkyBlue" Width="60" TextAlignment="Center" Name="person2">Smith</TextBlock>
                <TextBlock Canvas.Left="40" Canvas.Bottom="30" Background="Goldenrod" Width="60" TextAlignment="Center" Name="person3">CAM1</TextBlock>
                <TextBlock Canvas.Left="110" Canvas.Bottom="30" Background="HotPink" Width="60" TextAlignment="Center" Name="person4">Doe</TextBlock>
            </Canvas>
        </Button>
    </ItemsControl>
</DockPanel>

如何在我的c#add_Click函数中添加像我的XAML中的巨型按钮?我尝试过在网上搜索,但是找不到任何与此类似的东西。

1 个答案:

答案 0 :(得分:0)

根据您的目的,您可以选择一些选项。如果你只想&#34;添加&#34;只需少量按钮(2 - 3)即可更改add_Click方法中每个按钮的可见性。

button1.Visibility = Visibility.Collapsed;

这不是最好的选择,但技术上很简单。

更好的方法是build a user control包含你想要的一切。然后在视图模型中创建这些按钮的可观察集合。完成此操作后,您可以bind the item control itemsource to your collection

最后,在您的代码隐藏中,您可以创建这些按钮的集合,例如

GiantButtonCollection.Add(new GiantButton())

这要好得多(但需要更多的工作/知识)