2013-08-31 21 views
7

次のユーザーコントロールを作成しました。私は、XAMLウィンドウに追加すると、私はエラーucAppItem 『「のインスタンスを作成できません』を取得する私は、ツールバーからウィンドウにユーザーコントロールをドラッグし、次のようにユーザーコントロールのデザイナーで「[user control]」エラーのインスタンスを作成できません

XAMLは、次のとおりです。。

次のようにウィンドウの
<UserControl x:Class="Demos.ucAppItem" 
      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" Width="852" Height="215"> 
    <Grid> 

     <Label Name="lblTitle" Content="Title" HorizontalAlignment="Left" Margin="233,10,0,0" VerticalAlignment="Top" FontSize="22" FontFamily="Arial"/> 


     <Image Width="40" Height="40" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,80,0"> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Source" Value="pack://siteoforigin:,,,/arrow2.png"/> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Source" Value="pack://siteoforigin:,,,/arrow1.png"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Image.Style> 
     </Image> 
     <Label x:Name="lblRun" Content="Run" HorizontalAlignment="Right" Margin="0,88,35,0" VerticalAlignment="Top" Foreground="#FF2EAADC" FontSize="20"> 
      <Label.Style> 
       <Style TargetType="{x:Type Label}"> 
        <Setter Property="Foreground" Value="#FF2EAADC"/> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Foreground" Value="#006d9e"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Label.Style> 
     </Label> 
    </Grid> 
</UserControl> 

XAMLは次のとおりです。

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:Demos" x:Class="Demos.Window1" 
     Title="Window1" Height="487" Width="854"> 
    <Grid> 

     <local:ucAppItem/> 

    </Grid> 
</Window> 

事前にご協力いただきありがとうござい

+0

私のために働いた。ユーザーコントロールのコードの後ろに何か書いてありますか? – Nitin

答えて

4

@Anatoily Nikolaev - ご協力いただきありがとうございます!ラベル上のポインタが私が持っていた問題を解決し、あなたはイメージについて正しいものでした。私はあなたの答えを答えにします。それが問題だったのはソースだった。

私のラベルは、今のように定義されます。私のイメージは今のように定義されて

<Label x:Name="lblRun" Content="Run" HorizontalAlignment="Right" Margin="0,88,35,0" VerticalAlignment="Top" FontSize="20"> 
     <Label.Style> 
      <Style TargetType="{x:Type Label}"> 
       <Setter Property="Foreground" Value="#FF2EAADC"/> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Foreground" Value="#006d9e"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Label.Style> 
    </Label> 

 <Image> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Source" Value="{StaticResource arrow2}"/> 
        <Setter Property="Height" Value="40"/> 
        <Setter Property="Width" Value="40"/> 
        <Setter Property="VerticalAlignment" Value="Center"/> 
        <Setter Property="Margin" Value="0,0,80,0"/> 
        <Setter Property="HorizontalAlignment" Value="Right"/> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Source" Value="{StaticResource arrow1}"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Image.Style> 
     </Image> 

そして、私がこのように設定(App.xamlファイルに設定された)リソースを持っています:

<Application x:Class="demos.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <BitmapImage x:Key="arrow1" UriSource="arrow1.png" /> 
     <BitmapImage x:Key="arrow2" UriSource="arrow2.png" /> 
    </Application.Resources> 
</Application> 
+0

ImageBrushesを使用していくつかのボタンで同様の問題が発生しました。あなたの例のように、UserControl.ResourcesとApplication.Resourcesからブラシリソースを移動することは、私が欠けていた重要な部分であることが判明しました。 – jmbpiano

3

まず、代わりにpack://siteoforigin:,,,/arrow2.pngの実際のを作成する必要があります!と、ファイルはこのように、リソースとしてプロジェクトに存在することを確認する(MSDN):

pack://application:,,,/arrow1.png 

第二に、ラベルlblRun、ローカルでこのForeground値を設定するためには、動作しませんのためのトリガースタイル

012:

<Label x:Name="lblRun" Foreground="#FF2EAADC" FontSize="20" ... /> 

それにForegroundローカル値を削除し、Styleセッターを使用してみてください:WPFは、トリガーのスタイルよりも高い優先度の局所的な値があること、値の優先順位(MSDN)のリストを持っています

<Label x:Name="lblRun" Content="Run" HorizontalAlignment="Right" Margin="0,88,35,0" VerticalAlignment="Top" FontSize="20"> 
    <Label.Style> 
     <Style TargetType="{x:Type Label}"> 
      <Setter Property="Foreground" Value="#FF2EAADC"/> 

      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Foreground" Value="#006d9e"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Label.Style> 
</Label> 
+0

ありがとうございました!私はそれらの変更を加えましたが、残念ながらそれはまだデザイナーのエラーを与える! –

+0

@Rob McCabe:奇妙なことに、私にとってはうまくいきます。同じタイプのエラー? 'Image'コントロールをコメントアウトすると、エラーは消えますか? –

+0

さて、ラベルをエラーなしで追加できるようになりました。その画像だけが問題を引き起こしています。ここに私が持っているものがあります: –

関連する問題