0

奇妙なWPFの問題が発生しています。IMultiValueConverterWPFプロジェクトによって参照されるアセンブリに2つの定義があります。それらのコードは同じですが、名前が異なります。アセンブリを何度もクリーンアップして再構築しましたが、何らかの理由で値コンバーターの1つだけが機能し、もう1つは'clr名前空間に存在しません'xamlエラーを返します。

注:ファイルがプロジェクトが参照している正しい名前空間とアセンブリにあることはわかっています。これは、dllをWPFプロジェクトのbinフォルダーから直接反映したためです。

この現象の説明はありますか?

//// this works
public class IndexConverter : IMultiValueConverter
{
    public virtual object Convert(
        object[] values, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        var element = values[0] as Object;
        var sequence = values[1] as IEnumerable;
        return sequence.Cast<Object>().ToList().FindIndex(c => c.Equals(element)).ToString();
    }

    public virtual object[] ConvertBack(
        object value, Type[] targetTypes,
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}



////  this gives me xaml errors
public class IndexConverterCopy : IMultiValueConverter
{
    public virtual object Convert(
        object[] values, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        var element = values[0] as Object;
        var sequence = values[1] as IEnumerable;
        return sequence.Cast<Object>().ToList().FindIndex(c => c.Equals(element)).ToString();
    }

    public virtual object[] ConvertBack(
        object value, Type[] targetTypes,
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
4

1 に答える 1

1

新しい VS2012 には、ある種のキャッシュの問題のように見える奇妙なバグがいくつかあります。

唯一の解決策は、VisualStudio を再起動することです。

これまでのところ、このようなバグを3つ見つけました

  1. xaml レイアウトを変更します。デザイナー ビューで変更します。F5 キーを押してビルドします。アプリケーションに新しい変更が表示されません。VS の再起動が必要です。
  2. 元に戻すデータがすべて消え、ctrl+z が機能しなくなり、VS の再起動が必要になります
  3. デザイナーは何も表示せず、IndexOutOfRange 例外を表示します。VS の再起動が必要です

この問題は、xaml と cs が何らかの形で同期しなくなる同じ領域から発生しているように聞こえるため、VS の再起動が問題の唯一の修正になる可能性があります (SP1 を導入)

于 2013-03-03T11:45:56.237 に答える