【问题标题】:Collapsing/expanding action with wpf buttons使用 wpf 按钮折叠/展开操作
【发布时间】:2012-01-10 23:36:42
【问题描述】:

首先,让我声明我是 wpf 的业余爱好者。我正在尝试为 wpf 按钮创建一个折叠/展开类型的操作,这意味着当用户单击一个按钮时,我希望选择该按钮以展开其下方的新按钮列表。这意味着是启用 Web 的应用程序的导航类型。当在打开的列表上再次按下按钮时,我还想创建一个折叠交互。

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

    在 WPF 中有一个用于此的默认控件,名为 Expander。如果您想更改外观或动画,您可以查看 WPF 的模板和样式。默认情况下,此控件应满足您的大部分要求。

    【讨论】:

      【解决方案2】:

      我的第一个想法是使用 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>
      

      转换器是一个类实现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();
          }
      }
      

      【讨论】:

        【解决方案3】:

        只需使用ToggleButton 并将该部分的可见性绑定到其IsChecked 状态,就像在Expander 控件中通常所做的那样(您当然可以使用它来代替)。

        【讨论】:

          猜你喜欢
          • 2010-12-02
          • 1970-01-01
          • 1970-01-01
          • 2016-05-31
          • 2019-08-20
          • 2016-11-02
          • 1970-01-01
          • 2020-01-13
          • 2012-08-03
          相关资源
          最近更新 更多