【问题标题】:WPF Usercontrol with content presenter for a group of buttonsWPF 用户控件,带有一组按钮的内容演示者
【发布时间】:2018-01-29 16:08:43
【问题描述】:

我正在尝试弄清楚如何创建一个用户控件,该控件将充当一组切换按钮的模态组。我不想选择单选按钮路线,因为用户必须能够取消选择所有内容。我还需要列表支持垂直和水平展示。

我想要一个在 XAML 中看起来像这样的控件。

<MyControl>
    <Grid>
        <Grid.ColumnDefinitions>...</Grid.ColumnDefinitions>
        <ToggleButton />
        <ToggleButton />
        <ToggleButton />
        ...
        <ToggleButton />
    </Grid>
</MyControl>

我认为网格在这里可能不是正确的布局选项,因为我不知道我会有多少按钮。

【问题讨论】:

标签: wpf xaml


【解决方案1】:

您可以按照以下示例代码处理路由的Checked 事件。

XAML:

<Grid ToggleButton.Checked="Grid_Checked">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <ToggleButton Content="A" />
    <ToggleButton Content="B" Grid.Column="1" />
    <ToggleButton Content="C" Grid.Column="2" />
</Grid>

代码:

private void Grid_Checked(object sender, RoutedEventArgs e)
{
    Grid grid = sender as Grid;
    ToggleButton toggledButton = e.OriginalSource as ToggleButton;
    IEnumerable<ToggleButton> allToggleButtons = grid.Children.OfType<ToggleButton>();
    foreach (ToggleButton toggleButton in allToggleButtons)
        if (toggleButton != toggledButton)
            toggleButton.IsChecked = false;
}

Grid 中只能同时选中一个ToggleButton,但可以不选中所有ToggleButtons

【讨论】:

  • 这看起来可能会有所帮助。我今天会尝试测试一下。
  • 水平或垂直显示怎么样?有没有办法使用模板重新设计网格但将按钮保持在同一个位置?也许在正确的地方有一个内容演示者?
  • 如果您还有其他问题,请提出新问题。一问一问。
  • 那么原始问题过于宽泛,应该关闭。您不应该在同一个问题中询问布局 模态切换按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 2016-01-15
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多