9

XAML を使用する VS2010 のプロジェクトがあり、それを Expression Blend 4 にロードする必要があります。プロジェクトは VS2010 でビルドおよび実行されますが、Blend にロードされるのはこれが初めてです。メンバーが認識されなくても、Blend でビルドして実行します。

Scale プロパティが認識されないのはなぜですか?また、機能的には機能しているのにエラーとして表示されるのはなぜですか?

編集これはビルドして実行しますが、XAML は Blend でグラフィカルに表示されないため、技術者以外のユーザーは変更できません。

ユーザー コントロールへの参照を含む多くの .xaml ファイルには、Blend によって認識されない属性があり、次のエラーが発生します。

The member "XXXX" is not recognized or is not accessible

プロパティは .cs コード ビハインド ファイルに存在し、いずれの場合もエラー メッセージは同じです。

インターネットでこれに対する多くの可能な答えを見てきましたが、どれも解決策ではありません。参照されたアイテムは読み取り専用ではありません。さまざまなクラスとプロパティが Public です。また、欠落していた次の WPF 参照を .csproj ファイルに追加しました。

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

次のコードでは、ユーザー コントロールにプロパティとして存在する Scale 属性が認識されません。

MyLogo.xaml の UserControl は次のとおりです。

<UserControl x:Class="NamespaceX.NamespaceY.UI.Shapes.MyLogo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="132" Width="105">
<Canvas>
    <Canvas.LayoutTransform>
        <ScaleTransform x:Name="st" CenterX="0" CenterY="0" />
    </Canvas.LayoutTransform>
    <Image Source="/Client;component/Images/MyLogo.png"/>
</Canvas>

MyLogo.xaml.cs のコード ビハインドは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace NamespaceX.NamespaceY.UI.Shapes
{
/// <summary>
/// Interaction logic for MyLogo.xaml
/// </summary>
public partial class MyLogo : UserControl
{
    public double Scale
    {
        get
        {
            return st.ScaleX;
        }
        set
        {
            st.ScaleX = value;
            st.ScaleY = value;
        }
    }

    public MyLogo()
    {
        InitializeComponent();
    }
}
}

私の Navigation.xaml ファイルには次のものがあります。

<UserControl x:Class="NamespaceX.NamespaceY.UI.UserControls.Navigation"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shape="clr-namespace:NamespaceX.NamespaceY.UI.Shapes"    
Height="185" Width="1280" Loaded="UserControl_Loaded">
<FrameworkElement.Resources>
    <ResourceDictionary Source="../Resources/Main.xaml" />
</FrameworkElement.Resources>
<Canvas>
    <shape:MyLogo Scale="1.2" Height="181.483" Canvas.Left="38" Canvas.Top="4" Width="188" />
    <StackPanel Canvas.Left="205" Canvas.Top="-2" Width="1062">

    </StackPanel>
</Canvas>

4

7 に答える 7

18

これが解決策です。アプリケーションの.csprojファイルで、次のように変更します。

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>

これに:

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

Visual Studioが、構成マネージャーのAnyCPUで実行していることを報告しているという事実に惑わされないでください。.csprojファイルを手動で編集する必要があります。

于 2012-04-13T21:02:46.727 に答える
10

これらは、プラットフォームを変更するとキャッシュされたアセンブリが変更されるという点で関連しています。受け入れられた答えは受け入れられません。

これは私が推奨するものです:

  1. すべてのファイルを閉じる
  2. 溶液をきれいにする
  3. ソリューションを再構築する

影響を受ける XAML にビルド エラーがなくなりました。

これは私にとってはうまくいきますが、結果は異なる場合があります。

于 2014-06-25T02:57:08.693 に答える
0

私も同じ例外がありました。私の問題は、プロパティの Type がアセンブリにあり、それが UserControl を使用するプロジェクトで参照されていないことでした。

于 2015-03-09T16:47:49.963 に答える
0

VS2012 の vb.net プロジェクトで、この問題を一貫して再現/修正できました。プロジェクト内 ... プロパティ ... コンパイル ... ターゲット CPU は AnyCPU (デフォルト) に設定されています。すべて正常に動作します。

ターゲット CPU を x64 に変更し、保存してビルドします

ソリューションを閉じて再度開きます。

「メンバー「XXXX」が認識されていないか、アクセスできません」というエラーが表示されるようになりました

ターゲット CPU を任意の CPU に戻し、保存してビルドします

ウィンドウが正しく表示されるようになりました。

于 2014-05-07T16:51:47.217 に答える
0

Silverlight でも同じ問題がありましたが、ユーザー コントロールの名前空間が長すぎたため、短くしただけで機能しました。それが役に立てば幸い!

于 2012-12-01T01:40:46.560 に答える