2016-05-03 3 views
0

Я хочу иметь возможность добавлять гигантские кнопки в свой элемент ItemsControl. Кнопка гигант должен содержать холст с несколькими TextBlocks в нем, как и кнопки в следующем коде XAML:Добавить Canvas и TextBlocks к гигантской кнопке в C#

<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> 

Как я могу добавить кнопку гиганта, как в моем XAML в моей C Функция # add_Click? Я пробовал поиск в Интернете, но не смог найти ничего, что достигнет чего-то подобного.

ответ

0

У вас есть несколько вариантов в зависимости от того, что вы хотите сделать. Если вы хотите «добавить» небольшое количество кнопок (2 - 3), вы можете изменить видимость каждой кнопки в методе add_Click.

button1.Visibility = Visibility.Collapsed; 

Это не лучший вариант, но это технически легко.

Лучшим подходом будет build a user control, содержащий все, что вы хотите. Затем создайте наблюдаемую коллекцию этих кнопок в вашей модели просмотра. Как только это будет сделано, вы можете bind the item control itemsource to your collection.

Наконец, в вашем коде вы можете создавать коллекции этих кнопок, например.

GiantButtonCollection.Add(new GiantButton()) 

Это намного лучше (но требует больше работы/знаний)