资源" xxx"无法解决

时间:2014-04-22 09:27:28

标签: c# wpf xaml

您好我正在使用C#Wpf应用程序。我正在不断变为红色波浪形我要导入我的Style for按钮:

 Style="{StaticResource AppButtons}"

正在正确编译但不断发出警告:

The resource "AppButtons" could not resolved.

完整的XAML代码是:

<UserControl x:Class="AFIC.View.VLANS"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:res="clr-namespace:AFIC.Resources"
             xmlns:view="clr-namespace:AFIC.View"
             >


  <Grid >
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
      <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="150"/>
      <ColumnDefinition Width="150"/>
      <ColumnDefinition Width="Auto"/>

    </Grid.ColumnDefinitions>

    <Label 
        Grid.Row="0" 
        Grid.Column="0"
        VerticalAlignment="Center"
        Content="VLAN NAME"
        Foreground="Black"
        Opacity="0.8"
      />

    <TextBox 
        Grid.Row="0"
        Grid.Column="1"
        Margin="0,5,0,0"
        Height="25"
        Foreground="Black"
        Opacity="0.8"
        Width="Auto"
        Text="{Binding VlanName, UpdateSourceTrigger=PropertyChanged}"  
        />
    <Label 
        Grid.Row="1" 
        Grid.Column="0"
        VerticalAlignment="Center"
        Content="VLAN ID"
        Foreground="Black"
        Opacity="0.8"
        />
    <TextBox 
        Grid.Row="1"
        Grid.Column="1"
        Margin="0,5,0,0"
        Height="25"
        Foreground="Black"
        Opacity="0.8"
        Width="Auto"
        Text="{Binding VlanID, UpdateSourceTrigger=PropertyChanged}"   
        />

    <Label 
        Grid.Row="2" 
        Grid.Column="0"
        VerticalAlignment="Center"
        Content="IP FOR VLAN"
        Foreground="Black"
        Opacity="0.8"
      />

    <Grid 
      Grid.Column="1"
      Grid.Row="2">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="40"/>
        <ColumnDefinition Width="40"/>
        <ColumnDefinition Width="40"/>
        <ColumnDefinition Width="40"/>

      </Grid.ColumnDefinitions>
    <TextBox  
       Grid.Row="2"
       Grid.Column="0"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanIP1, UpdateSourceTrigger=PropertyChanged}"       
        />
      <TextBox  
       Grid.Row="2"
       Grid.Column="1"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanIP2, UpdateSourceTrigger=PropertyChanged}"

        />
      <TextBox  
       Grid.Row="2"
       Grid.Column="2"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanIP3, UpdateSourceTrigger=PropertyChanged}"

        />
      <TextBox  
       Grid.Row="2"
       Grid.Column="3"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanIP4, UpdateSourceTrigger=PropertyChanged}"

        />
    </Grid>
    <Label 
        Grid.Row="3" 
        Grid.Column="0"
        VerticalAlignment="Center"
        Content="DEFAULT ROUTE"
        Foreground="Black"
        Opacity="0.8"
      />
    <Grid
      Grid.Row="3"
      Grid.Column="1">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="40"/>
        <ColumnDefinition Width="40"/>
        <ColumnDefinition Width="40"/>
        <ColumnDefinition Width="40"/>
      </Grid.ColumnDefinitions>

      <TextBox  
       Grid.Row="2"
       Grid.Column="0"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanDefaultRoute1, UpdateSourceTrigger=PropertyChanged}"       
        />
      <TextBox  
       Grid.Row="2"
       Grid.Column="1"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanDefaultRoute2, UpdateSourceTrigger=PropertyChanged}"       
        />
      <TextBox  
       Grid.Row="2"
       Grid.Column="2"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanDefaultRoute3, UpdateSourceTrigger=PropertyChanged}"       
        />
      <TextBox  
       Grid.Row="2"
       Grid.Column="3"
        Margin="5"  
        VerticalAlignment="Center"
        MaxLength="3" 
        Width="30" 
        Foreground="Black"
        Opacity="0.8"
        Text="{Binding VlanDefaultRoute4, UpdateSourceTrigger=PropertyChanged}"       
        />
    </Grid>

    <Button Grid.Column="3"
            Grid.Row="0"
            Content="Add VLAN"
             Margin="10,5,0,0"
            Style="{StaticResource AppButtons}"
           />      

    <Button Grid.Column="3" 
            Grid.Row="2"
            Content="Remove VLAN"
            Margin="10,5,0,0"
            Style="{StaticResource AppButtons}"
            Width="100"/>

    <DataGrid Grid.Row="4"
              Grid.ColumnSpan="3"
              Height="200"
              Margin="10,10,0,0">     
    </DataGrid>
  </Grid>


</UserControl>

这是我的资源字典代码:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:res="clr-namespace:AFIC.Resources"
                    xmlns:VM="clr-namespace:AFIC.ViewModel"
                    >


  <Style TargetType="{x:Type Button}" x:Key="AppButtons">
    <Setter Property="Height"               Value="30"/>
    <Setter Property="FontFamily"           Value="Arial"/>
    <Setter Property="FontSize"             Value="13"/>
    <Setter Property="FontWeight"           Value="Bold"/>
    <Setter Property="Opacity"              Value="0.5" />
    <Setter Property="Foreground"           Value="{StaticResource ATTWhite}"/>

    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="Button">
          <Border CornerRadius="2" 
                    BorderBrush="White"
                    BorderThickness="0"
                    Background="{StaticResource ATTBlue}"
                    >
            <ContentPresenter
                x:Name="contentPresenter"
                ContentTemplate="{TemplateBinding ContentTemplate}"
                Content="{TemplateBinding Content}"
                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                />
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>

    <Style.Triggers>
      <Trigger Property="IsEnabled" Value="True">
        <Setter Property="Opacity" Value="1" />
      </Trigger>
    </Style.Triggers>
  </Style>

  <!-- EULA Accept Buuton Style -->
  <!-- Style inherits from the AppButtons style set above -->
  <Style BasedOn="{StaticResource AppButtons }" TargetType="{x:Type Button}" x:Key="EULAAcceptButton">
    <Setter Property="Opacity" Value="0.5" />
    <Style.Triggers>
      <DataTrigger Binding="{Binding IsChecked, ElementName=EULAAcceptOption}" Value="True">
        <Setter Property="Opacity" Value="1" />
      </DataTrigger>

      <DataTrigger Binding="{Binding IsChecked, ElementName=EULAAcceptOption}" Value="False">
        <Setter Property="IsEnabled" Value="False" />
      </DataTrigger>
    </Style.Triggers>
  </Style>

  <!-- EULA Reject Buuton Style -->
  <!-- Style inherits from the AppButtons style set above -->
  <Style BasedOn="{StaticResource AppButtons}" TargetType="{x:Type Button}" x:Key="EULARejectButton">
    <Setter Property="Opacity" Value="0.5" />
    <Style.Triggers>
      <DataTrigger Binding="{Binding IsChecked, ElementName=EULARejectOption}" Value="True">
        <Setter Property="Opacity" Value="1" />
      </DataTrigger>

      <DataTrigger Binding="{Binding IsChecked, ElementName=EULARejectOption}" Value="False">
        <Setter Property="IsEnabled" Value="False" />
      </DataTrigger>
    </Style.Triggers>
  </Style>


  <!-- Next Button Style. This Style inherits from the Button style seen above. -->
  <Style BasedOn="{StaticResource AppButtons }" TargetType="{x:Type Button}" x:Key="NextButtonStyle">
    <Setter Property="Opacity" Value="0.5" />
    <Setter Property="Content" Value="{x:Static res:Strings.WizardView_Button_Next}" />
    <Style.Triggers>
      <DataTrigger Binding="{Binding Path=LastPageConfigure}" Value="True">
        <Setter Property="Content" Value="{x:Static res:Strings.WizardView_Button_Configure}" />
      </DataTrigger>
      <DataTrigger Binding="{Binding Path=LastPageFinish}" Value="True">
        <Setter Property="Content" Value="{x:Static res:Strings.WizardView_Button_Finish}" />
      </DataTrigger>

    </Style.Triggers>
  </Style>
</ResourceDictionary>

任何让我摆脱这个警告的建议都会非常值得注意!?

2 个答案:

答案 0 :(得分:2)

你应该将资源字典(第二个剪辑)合并到你使用它的地方(第一个剪辑),按照下面的例子,你应该好好去:

将其添加到Grid节点(可以将其添加到Button的任何祖先节点中):

<Grid.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary 
              Source="Resources/MyResourceDictionary.xaml">
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Grid.Resources>

阅读有关资源和资源词典的一些好的链接:

  1. http://www.codeproject.com/Articles/35346/Using-a-Resource-Dictionary-in-WPF
  2. http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/03/creating-and-consuming-resource-dictionaries-in-wpf-and-silverlight.aspx

答案 1 :(得分:0)

看起来你并不是唯一遇到此类问题的人,这听起来像VS wpf设计师中的一些错误。

但是,Expression Blend 4使用设计时资源字典处理此问题,该字典有助于解析此类资源。

The resource could not be resolved (VS 2010 RC)