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