2014-11-03 5 views

ответ

1

Возможно, вам, скорее всего, понадобится построить Control самостоятельно. Вы можете создать составной элемент управления, состоящий из <Button> и <ListBox>, чтобы подражать тому, что вы пытаетесь сделать. На самом деле это довольно легко.

Например:

<Button Content="{Binding SelectedItem.Song, FallbackValue=Show List, ElementName=myListBox}" Height="100" Click="Button_Click"></Button> 
<ListBox x:Name="myListBox" Height="60" Visibility="Collapsed"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderBrush="Red" BorderThickness="1" Height="50" Padding="15,0"> 
       <TextBlock VerticalAlignment="Center"> 
        <Run Text="{Binding Song}"></Run> 
       </TextBlock> 
      </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate>     
</ListBox> 

То, что я здесь запрограммирован Кнопку с его Content привязываться к SelectedItem в ListBox, который имеет .Song собственности, если не выбран ни один он возвращается в «Показать список "

Когда пользователь нажимает кнопку, он должен скрывать/показывать окно списка в зависимости от текущей видимости.

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    if (this.myListBox.Visibility == System.Windows.Visibility.Collapsed) 
    { 
     this.myListBox.Visibility = System.Windows.Visibility.Visible; 
    } 
    else 
     this.myListBox.Visibility = System.Windows.Visibility.Collapsed; 
} 

Ваша задача, чтобы обернуть все это внутри хороший UserControl или вы можете просто использовать его как есть.

Вот некоторые скриншоты его в действии:

enter image description here