WPF Usercontrol,带有一组按钮的内容演示者

时间:2017-08-21 14:23:30

标签: wpf xaml

我试图弄清楚如何创建一个用户控件来充当togglebuttons的模态组。我不想去单选按钮路线,因为用户必须能够取消选择所有内容。我还需要列表来支持纵向和横向演示。

我希望在XAML中拥有一个看起来像这样的控件。

public class ValidationHelper
{
    private static ErrorProvider errProvider = new ErrorProvider();
    public static void ValidateFields(List<Control> controls)
    {
        errProvider.Clear();
        foreach (Control c in controls)
        {
            errProvider.SetError(c, "");
            if (string.IsNullOrWhiteSpace(c.Text))
            {
                errProvider.SetError(c, "Please fill the required field");
            }
        }
    }

}

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

1 个答案:

答案 0 :(得分:0)

您可以根据以下示例代码处理路由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;
}

ToggleButton中只能同时检查一个Grid,但可以取消选中所有ToggleButtons