2012-01-10 2 views
3

Прежде всего, позвольте мне сказать, что я любитель, когда речь идет о wpf. Я пытаюсь создать действие типа collapsing/expand type для кнопки wpf, то есть когда пользователь нажимает кнопку, я бы хотел, чтобы кнопка была выбрана для добавления нового списка кнопок под ним. Это предназначено для типа навигации для веб-приложения. Я также хотел бы создать коллапсирующее взаимодействие, когда кнопка снова будет нажата в открытом списке.Свертывание/расширение действия с помощью кнопок wpf

ответ

3

В WPF есть элемент управления по умолчанию, который называется Expander. Если вы хотите изменить внешний вид или анимацию, вы можете изучить шаблоны и стиль WPF. По умолчанию этот элемент управления должен удовлетворять большинству ваших требований.

1

Просто используйте ToggleButton и привяжите видимость раздела к его IsChecked состоянию, как это обычно делается в элементе управления Expander (что вы, конечно же, могли бы использовать вместо этого).

1

Моя первая идея - использовать ToggleButton и привязать его свойство IsChecked к видимости элемента, который вы хотите показать. Затем вам понадобится конвертер, чтобы преобразовать логическое проверенное значение в значение Видимость. Вот пример:

<Grid> 
    <Grid.Resources> 
    <BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" /> 
    </Grid.Ressources> 
    <ToggleButton x:Name="toggleButton" Content="Toggle" /> 
    <Grid Visibility={Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BoolToVisibilityConverter}}> 
    <!-- place your content here --> 
    </Grid> 
</Grid> 

Преобразователь класс implementig IValueConverter:

public class BoolToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     bool i = value is bool ? (bool) value : false; 
     return i ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
Смежные вопросы