2

我有一个关于 C# WPF 的项目,我只是按照说明复制和粘贴指令中的代码。我在最后一部分,但不幸的是我在这部分收到了错误:

<local:SearchPanel Grid.Column="1" Grid.Row="1"
Visibility="{Binding ElementName=MyMovieDatabaseWindow, Path=IsSearchPaneVisible, Converter={StaticResource VisibilityConverter}}"/>

错误是:

Error 1 ''local' is an undeclared prefix. Line 138, position 10.' XML is not valid. C:\Documents and Settings\xxxxx\Desktop\WPF Training Lab 1\WPF Training Lab 1\WPF Training Lab 1\MainWindow.xaml 138 10 WPF Training Lab 1

Error 2 The type 'local:SearchPanel' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. C:\Documents and Settings\xxxx\Desktop\WPF Training Lab 1\WPF Training Lab 1\WPF Training Lab 1\MainWindow.xaml 138 10 WPF Training Lab 1

这是完整的代码:

主窗口.xaml

    <Window x:Class="WPF_Training_Lab.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="My Movie Database" Height="Auto" Width="Auto" 
       Icon="Res\Reel.png"
       Background="{x:Static SystemColors.ControlDarkDarkBrush}"
       x:Name="MyMovieDatabaseWindow" xmlns:local="clr-namespace:WPF_Training_Lab_1">
    <Window.Resources>
        <ControlTemplate x:Key="NavButtonTemplate" TargetType="{x:Type Button}">
            <Label Content="{TemplateBinding Property=Content}">
                <Label.Resources>
                    <Style TargetType="{x:Type Label}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type Label}">
                                    <TextBlock>                        <TextBlock.Resources>
   <Style TargetType="{x:Type TextBlock}">
<Setter Property="TextDecorations" Value="Underline"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="FontWeight" Value="Bold"/>
   </Style>
</TextBlock.Resources>
<ContentPresenter/>
                                    </TextBlock>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsEnabled" Value="false">
                                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                        <Setter Property="TextBlock.TextDecorations" Value="Underline" />
                    </Style>
                </Label.Resources>
            </Label>
        </ControlTemplate>
        <!-- Custom Commands -->
        <RoutedUICommand x:Key="Command_NavigateToSearch" Text="Search"/>
        <RoutedUICommand x:Key="Command_NavigateToReview" Text="Review"/>
        <RoutedUICommand x:Key="Command_NavigateToMaintain" Text="Maintain"/>
        <!-- Shared ToolTips-->
        <ToolTip x:Key="TT_NavigateToSearch" Content="Navigate to the Search screen"/>

        <ToolTip x:Key="TT_NavigateToReview" Content="Navigate to the Review screen"/>

        <ToolTip x:Key="TT_NavigateToMaintain" Content="Navigate to the Maintain screen"/>

        <!-- Images/Icons -->
        <Image x:Key="Image_Cut" Source="Res\Cut.png" Height="12" Width="12"/>

        <Image x:Key="Image_Copy" Source="Res\Copy.png" Height="12" Width="12"/>

        <Image x:Key="Image_Paste" Source="Res\Paste.png" Height="12" Width="12"/>

    </Window.Resources>
    <Window.CommandBindings>
        <CommandBinding x:Name="CommandBinding_Close" Command="Close" CanExecute="CommandBinding_Close_CanExecute" Executed="CommandBinding_Close_Executed"/>

        <CommandBinding x:Name="CommandBinding_NavToSearch" Command="{StaticResource Command_NavigateToSearch}" CanExecute="CommandBinding_NavToSearch_CanExecute" Executed="CommandBinding_NavToSearch_Executed"/>

        <CommandBinding x:Name="CommandBinding_NavToReview" Command="{StaticResource Command_NavigateToReview}" CanExecute="CommandBinding_NavToReview_CanExecute" Executed="CommandBinding_NavToReview_Executed"/>

        <CommandBinding x:Name="CommandBinding_NavToMaintain" Command="{StaticResource Command_NavigateToMaintain}" CanExecute="CommandBinding_NavToMaintain_CanExecute" Executed="CommandBinding_NavToMaintain_Executed"/>
    </Window.CommandBindings>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="115"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="25"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!-- Menu Bar -->
        <Menu Height="25" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0">
            <MenuItem Header="_File">
                <MenuItem  Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}" />
            </MenuItem>
            <MenuItem Header="_Edit">
                <MenuItem Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}"/>
                <MenuItem Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}"/>
                <MenuItem Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}"/>
            </MenuItem>
            <MenuItem Header="_Navigate">
                <MenuItem Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}"/>
                <MenuItem Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}"/>
                <MenuItem Command="{StaticResource Command_NavigateToSearch}" Header="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" ToolTip="{StaticResource TT_NavigateToSearch}"/>
            </MenuItem>

        </Menu>

        <Border Background="AliceBlue" CornerRadius="5" Grid.Column="0"    Grid.Row="1" HorizontalAlignment="Stretch" Margin="4,4,2,4">

            <StackPanel HorizontalAlignment="Stretch">

                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0" Cursor="Arrow" Background="Transparent">

                    <Image Source="Res\search.png" Height="14" Width="14" Margin="0,0,5,0"/>
                    <Button  Template="{StaticResource NavButtonTemplate}" HorizontalAlignment="Center" Command="{StaticResource Command_NavigateToSearch}" 
Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"
ToolTip="{StaticResource TT_NavigateToSearch}"
 />
                </StackPanel>

                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0" Background="Transparent" Cursor="Arrow">

                    <Image Source="Res\settings_32.png" Height="14" Width="14" Margin="0,0,5,0"/>
                    <Button Template="{StaticResource NavButtonTemplate}" HorizontalAlignment="Center" Command="{StaticResource Command_NavigateToReview}" 
Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"
ToolTip="{StaticResource TT_NavigateToReview}" />
                </StackPanel>

                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0" Cursor="Hand" Background="Transparent">

                    <Image Source="Res\gear.png" Height="14" Width="14" Margin="0,0,5,0"/>
                    <Button Template="{StaticResource NavButtonTemplate}" HorizontalAlignment="Center" Command="{StaticResource Command_NavigateToMaintain}" 
Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"
ToolTip="{StaticResource TT_NavigateToMaintain}" />
                </StackPanel>
            </StackPanel>
        </Border>

        <!-- User controls representing each of the panes the user can navigate to. -->
        <local:SearchPanel Grid.Column="1" Grid.Row="1" Visibility="{Binding ElementName=MyMovieDatabaseWindow, Path=IsSearchPaneVisible, Converter={StaticResource VisibilityConverter}}"/>

    </Grid>

</Window>

SearchPanel.xaml

 <UserControl x:Class="WPF_Training_Lab_1.SearchPanel"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             xmlns:converters="clr-namespace:WPF_Training_Lab_2.Converters"
             d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Resources>
        <RoutedUICommand x:Key="Command_Search" Text="Search"/>
        <BooleanToVisibilityConverter x:Key="boolToVisibilityConverter"/>
        <converters:NotBooleanToVisibilityConverter x:Key="notTheBoolConverter"/>
        <converters:ThumbnailConverter x:Key="thumbnailConverter"/>
        <converters:TextConverter x:Key="textConverter" />
        <converters:TmdbImageConverter x:Key="tmdbImageConverter" />
        <converters:CastMemberConverter x:Key="castMemberConverter"/>

        <!-- Template defining the appearance of each item in the results listbox -->
        <DataTemplate x:Key="SearchResultTemplate">
            <DataTemplate.Resources>
                <ToolTip x:Key="tooltip">
                    <ToolTip.Content>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Click to see details for the movie "/>
                            <TextBlock Text="{Binding DbMovie.Name}"/>
                        </StackPanel>
                    </ToolTip.Content>
                </ToolTip>
            </DataTemplate.Resources>
            <Border CornerRadius="5" Background="LightSteelBlue" BorderBrush="SteelBlue" BorderThickness="1" Margin="2,2,5,2"
MinWidth="285" ToolTip="{StaticResource tooltip}">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>

                    <Image Grid.RowSpan="2" Margin="3" VerticalAlignment="Top" Width="92">
                        <Image.Source>
                            <BitmapImage UriSource="{Binding DbMovie.Images, Converter={StaticResource thumbnailConverter}, ConverterParameter='poster'}"
DecodePixelWidth="92"/>
                        </Image.Source>
                    </Image>
                    <TextBlock Margin="3" Grid.Column="1" Grid.Row="0" Text="{Binding DbMovie.Name}" FontWeight="Bold" TextWrapping="Wrap" />
                    <TextBlock Margin="5,3,3,3" Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" Text="{Binding DbMovie.Overview, Converter={StaticResource textConverter}}" VerticalAlignment="Top" />
                </Grid>
            </Border>
        </DataTemplate>

    </UserControl.Resources>
    <UserControl.CommandBindings>
        <CommandBinding x:Name="CommandBinding_Search" Command="{StaticResource Command_Search}" CanExecute="CommandBinding_SearchCanExecute"
Executed="CommandBinding_SearchExecuted"/>

   </UserControl.CommandBindings>

    <Grid>
        <!-- Search pane at top -->
        <Border x:Name="SearchPane" HorizontalAlignment="Stretch" Margin="2,4,4,4">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="4"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Border Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" CornerRadius="5" Background="AliceBlue" Padding="5">
                    <Grid>
                        <Image Source="Res\Search.png" Height="48" Width="48" HorizontalAlignment="Left"/>
                        <StackPanel Margin="0,0,0,5" HorizontalAlignment="Center">
                            <StackPanel Orientation="Horizontal" Margin="5">
                                <Label Content="Title: " FontWeight="Bold"/>
                                <TextBox x:Name="txtTitleSearch" Width="150" KeyUp="txtTitleSearch_KeyUp" ToolTip="Enter a movie title to search for"  />
                                <Label Content="Year: " FontWeight="Bold" Margin="15,0,0,0"/>
                                <TextBox x:Name="txtYearFilter" Width="50" KeyUp="txtTitleSearch_KeyUp" ToolTip="Enter a year to narrow search results"/>
                            </StackPanel>
                            <Button x:Name="btnSearch" Content="Search" Margin="0,10,0,0" Width="75" Command="{StaticResource Command_Search}"
ToolTip="Click to perform the search"/>
                        </StackPanel>
                        <Image Source="Res\Search.png" Height="48" Width="48" HorizontalAlignment="Right"/>
                    </Grid>
                </Border>
            </Grid>
        </Border>

        <Border Grid.Row="2" CornerRadius="5" Background="AliceBlue" Padding="3">
            <Grid VerticalAlignment="Stretch">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="300" MinWidth="300"/>
                    <ColumnDefinition Width="3"/>
                    <ColumnDefinition Width="0.7*"/>
                </Grid.ColumnDefinitions>
                <Border CornerRadius="5" BorderBrush="LightSteelBlue" BorderThickness="1" Margin="0,0,3,0" Grid.Column="0"
Visibility="{Binding HasSearchResults, Converter={StaticResource boolToVisibilityConverter}}">

                    <ListBox ItemsSource="{Binding SearchResults}" ItemTemplate="{StaticResource SearchResultTemplate}" Grid.Column="0" Margin="-5" MinHeight="250" MinWidth="250" Width="Auto" Background="Transparent" x:Name="lstSearchResults" Padding="5"
BorderBrush="Transparent" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch"/>
                </Border>

                <Border CornerRadius="5" BorderBrush="LightSteelBlue" BorderThickness="1" Margin="0,0,3,0"  Grid.Column="0"
Visibility="{Binding HasSearchResults, Converter={StaticResource notTheBoolConverter}}">
                    <Label VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold" FontSize="16">No Results</Label>
                </Border>

                <GridSplitter Grid.Column="1" Grid.Row="2" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"                 Background="LightSteelBlue" />
            </Grid>
        </Border>

    </Grid>
</UserControl>

我该如何解决?谢谢!

4

1 回答 1

13

您在 XAML 文件的顶部缺少“xmlns:local”属性。这应该类似于:

xmlns:local="clr-namespace:YourAppNamespace"

YourAppNamespace包含类的命名空间在哪里SearchPanel

于 2013-02-27T07:51:55.667 回答