C# 通过单击按钮切换网格

C# 通过单击按钮切换网格,c#,wpf,button,grid,click,C#,Wpf,Button,Grid,Click,我试图通过点击按钮来折叠网格。以下是我的按钮在xaml中的表示方式: <Button Grid.Column="1" Grid.RowSpan="3" Width="25" Content="&lt;&lt;" Click="OnClicked" x:Name="btnCollapse"></Button> 这很好,我的问题是,我如何能够纯粹用xaml而不是用代码来表示这种逻辑 我的布局: <Grid> <Grid/> <

我试图通过点击按钮来折叠网格。以下是我的按钮在xaml中的表示方式:

 <Button Grid.Column="1" Grid.RowSpan="3" Width="25" Content="&lt;&lt;" Click="OnClicked" x:Name="btnCollapse"></Button>
这很好,我的问题是,我如何能够纯粹用xaml而不是用代码来表示这种逻辑

我的布局:

<Grid>
<Grid/>
<GridSplitter/>
</Grid>
<Button/>
应将网格的可见性依赖项属性绑定到DataContext中的布尔属性,该属性应实现并使用:

在XAML中:

<Grid Visibility="{Binding IsGridVisible, Converter={StaticResource BooleanToVisibilityConverter}">
    <!-- stuff -->
</Grid>
如何设置按钮内容:

IValueConverter:

风格:

应将网格的可见性依赖项属性绑定到DataContext中的布尔属性,该属性应实现并使用:

在XAML中:

<Grid Visibility="{Binding IsGridVisible, Converter={StaticResource BooleanToVisibilityConverter}">
    <!-- stuff -->
</Grid>
如何设置按钮内容:

IValueConverter:

风格:


Mike您打算如何在不使用事件处理程序的情况下在XAML中触发OnClicked事件?如前所述,如果您想要纯XAML,您必须避免单击事件处理程序。用复选框代替按钮怎么样?您不必手动实现逻辑来切换布尔属性,并且可以直接绑定到IsChecked属性。Mike您如何在不使用事件处理程序的情况下在XAML中触发OnClicked事件?如前所述,如果您想要纯XAML,则必须避免单击事件处理程序。用复选框代替按钮怎么样?您不必手动实现逻辑来切换布尔属性,您可以直接绑定到IsChecked属性。谢谢,我将如何在单击时更改按钮的内容?有几种方法:将content属性绑定到以与布尔相同的方式更改的字符串;将内容属性绑定到同一bool,并使用IValueConverter将其转换为字符串;使用DataTriggers样式设置按钮的内容属性。谢谢,我将如何在单击时更改按钮的内容?有几种方法:将内容属性绑定到以与bool相同的方式更改的字符串;将内容属性绑定到同一bool,并使用IValueConverter将其转换为字符串;对设置按钮内容属性的DataTriggers使用样式。
<Grid Visibility="{Binding IsGridVisible, Converter={StaticResource BooleanToVisibilityConverter}">
    <!-- stuff -->
</Grid>
public class MyBooleanToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool)value ? ">>" : "<<";
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

<Button Click="OnClick" Content="{Binding IsGridVisible, Converter={StaticResource MyBooleanToStringConverter}}"/>
<Button Click="OnClick">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Content" Value="<<"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsGridVisible}" Value="False">
            <Setter Property="Content" Value=">>"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>