2012-01-10 343 views
3

首先,让我说我是一个业余爱好者,当谈到wpf。我正在尝试为一个wpf按钮创建一个collapsing/expanding类型的动作,这意味着当用户单击一个按钮时,我希望选中该按钮来展开它下面的新按钮列表。这意味着成为支持Web的应用程序的导航类型。我还想在打开的列表上再次按下按钮时创建折叠交互。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(); 
    } 
}