c#在资源文件中隐藏/显示控件

本文关键字:显示 控件 隐藏 资源 源文件 | 更新日期: 2023-09-27 18:10:19

我第一次使用WPF,我试图在基于切换按钮的测试工具栏上显示/隐藏组对象。

工具栏是通过资源字典中的模板创建的,我不知道如何使其工作,因为与winforms相比,它似乎是一个更大的问题。

在所有的例子中,我发现如果项目没有模板化,它们似乎都能起作用,我能做到这一点吗?

到目前为止,我的代码如下,故障点是在登录按钮上,因为我有x:名称引用,显然我不能这样做,因为它是资源字典的一部分,所以我很困惑…

                <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                                    xmlns:s="clr-namespace:wpfApplication1">
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="pack://application:,,,/wpfApplication1;component/Resources/Styles/Shared.xaml"/>
                        <ResourceDictionary Source="pack://application:,,,/wpfApplication1;component/Resources/Styles/ToolBar.xaml"/>
                    </ResourceDictionary.MergedDictionaries>
                    <ToolBar x:Key="MyToolbar" Height="120">
                        <ToolBar.Resources>
                            <BooleanToVisibilityConverter x:Key="boolToVis"/>   
                        </ToolBar.Resources>
                        <GroupBox x:Name="tBtn" Header="Login" Style="{StaticResource ToolbarGroup}" Margin="5,3,3,3">
                            <StackPanel Grid.Row="1" Orientation="Horizontal">
                                <!--Login-->
                                <ToggleButton  Margin="3" Width="55" Style="{StaticResource ToolBarButtonBaseStyle}"
                                        HorizontalContentAlignment="Center""
                                        CommandTarget="{Binding ElementName=MyTestApp}">
                                    <ToggleButton.Content>
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="4*"/>
                                                <RowDefinition Height="1*"/>
                                            </Grid.RowDefinitions>
                                            <Image Source="pack://application:,,,/wpfApplication1;component/Resources/Images/Login.png" Width="45"/>
                                            <TextBlock Grid.Row="1" Text="New" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>
                                        </Grid>
                                    </ToggleButton.Content>
                                </ToggleButton>
                            </StackPanel>
                        </GroupBox>
                        <GroupBox Visibility="{Binding Path=IsChecked, ElementName=tBtn, Converter={StaticResource boolToVis}}" Header="File" Style="{StaticResource ToolbarGroup}" Margin="5,3,3,3">
                            <StackPanel Grid.Row="1" Orientation="Horizontal">
                                <!--File-->
                                <Button  Margin="3" Width="55" Style="{StaticResource ToolBarButtonBaseStyle}"
                                        HorizontalContentAlignment="Center"
                                        Command="{x:Static ApplicationCommands.New}"
                                        CommandTarget="{Binding ElementName=MyTestApp}">
                                    <Button.Content>
                                        <Grid>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="4*"/>
                                                <RowDefinition Height="1*"/>
                                            </Grid.RowDefinitions>
                                            <Image Source="pack://application:,,,/wpfApplication1;component/Resources/Images/GenericDocument.png" Width="45"/>
                                            <TextBlock Grid.Row="1" Text="New" VerticalAlignment="Bottom" HorizontalAlignment="Center"/>
                                        </Grid>
                                    </Button.Content>
                                </Button>
                                <StackPanel Orientation="Vertical" Margin="0,2,0,2">
                                    <Button Margin="1" Padding="2" HorizontalContentAlignment="Left"
                                            Style="{StaticResource ToolBarButtonBaseStyle}"
                                            Command="{x:Static ApplicationCommands.Open}"
                                            CommandTarget="{Binding ElementName=MyTestApp}">
                                        <Button.Content>
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition/>
                                                    <ColumnDefinition/>
                                                </Grid.ColumnDefinitions>
                                                <Image Source="pack://application:,,,/wpfApplication1;component/Resources/Images/OpenFolder.png" Width="16"/>
                                                <TextBlock Margin="3,0,3,0" Text="Open" VerticalAlignment="Center"  Grid.Column="1"/>
                                            </Grid>
                                        </Button.Content>
                                    </Button>
                                    <Button Margin="1" Padding="2" HorizontalContentAlignment="Left"
                                            Style="{StaticResource ToolBarButtonBaseStyle}"
                                            Command="{x:Static ApplicationCommands.Save}"
                                            CommandTarget="{Binding ElementName=MyTestApp}">
                                        <Button.Content>
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition/>
                                                    <ColumnDefinition />
                                                </Grid.ColumnDefinitions>
                                                <Image Source="pack://application:,,,/wpfApplication1;component/Resources/Images/Save.png" Width="16"/>
                                                <TextBlock Margin="3,0,3,0" Text="Save" VerticalAlignment="Center" Grid.Column="1"/>
                                            </Grid>
                                        </Button.Content>
                                    </Button>
                                    <Button Margin="1" Padding="2" HorizontalContentAlignment="Left"
                                            Style="{StaticResource ToolBarButtonBaseStyle}"
                                            Command="{x:Static ApplicationCommands.Print}"
                                            CommandTarget="{Binding ElementName=MyTestApp}">
                                        <Button.Content>
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition/>
                                                    <ColumnDefinition />
                                                </Grid.ColumnDefinitions>
                                                <Image Source="pack://application:,,,/wpfApplication1;component/Resources/Images/Print.png" Width="16"/>
                                                <TextBlock Margin="3,0,3,0" Text="Print" VerticalAlignment="Center" Grid.Column="1"/>
                                            </Grid>
                                        </Button.Content>
                                    </Button>
                                </StackPanel>
                            </StackPanel>
                        </GroupBox>
                    </ToolBar>
                </ResourceDictionary>

事先感谢您的帮助

c#在资源文件中隐藏/显示控件

现在你的GroupBox被命名为"tBtn",但那应该是你的ToggleButton。(当你引用它的属性IsChecked时)尝试将ToggleButton命名为tBtn,然后重试