首先,让我声明一下,我在wpf方面是个业余爱好者。我正在尝试为一个wpf按钮创建可折叠/展开类型的操作,这意味着当用户点击按钮时,我希望所选按钮能够展开一个新的按钮列表。这是为web应用程序设计的导航类型。当打开列表后再次按下按钮时,我还想创建一个折叠交互。
我的第一个想法是使用ToggleButton,并将其IsChecked属性绑定到您想要显示的元素的可见性。然后,您需要使用转换器将布尔值Checked值转换为Visibility值。这里是一个示例:
<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>
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();
}
}
ToggleButton
,并将该部分的可见性绑定到其IsChecked
状态,就像在Expander
控件中通常所做的那样(当然你也可以直接使用它)。