wpf C # Скрывает / показывает элементы управления в файле ресурсов

#c# #wpf

#c# #wpf

Вопрос:

Я впервые играю с WPF и пытаюсь отобразить / скрыть групповые объекты на тестовой панели инструментов с помощью кнопки переключения.

Панель инструментов создается с помощью шаблона в словаре ресурсов, и я не могу понять, как заставить это работать, поскольку это кажется гораздо большей проблемой по сравнению с winforms.

Из всех примеров, которые я нашел, все они, похоже, функционируют, если элемент не является шаблоном, есть ли какой-либо способ, которым я могу достичь этого.

мой код пока приведен ниже, а точка сбоя находится на кнопке переключения входа в систему, поскольку у меня есть ссылка на x: name, и, по-видимому, я не могу сделать это как часть словаря ресурсов, поэтому я довольно озадачен…

                 <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>
  

Заранее большое спасибо за любую помощь

Ответ №1:

теперь ваш GroupBox называется «tBtn», но это должна быть ваша кнопка переключения. (поскольку вы ссылаетесь на его свойство IsChecked) Попробуйте присвоить вашему переключателю tBtn и повторить попытку

Комментарии:

1. Привет, извините за задержку, это была опечатка при загрузке, я попытался переместить ее, и я все еще получаю сообщение об ошибке, касающееся использования name в словаре ресурсов