6

データベースから入力されたレコードのテーブルを表示するデータグリッドを作成しました。特定の条件が満たされたときにデータグリッドのセルをアニメーション化したいと考えています。このために、IValueConverter を継承するBlinkConverterという名前のコンバーター クラスを作成しました。

このコンバーターを動作させるために、プロジェクトの名前空間を xaml エディターに次のようにマップしました。

       xmlns:local="clr-namespace:BlinkApplication"

注: BlinkApplicationは私のプロジェクトの名前です

これを追加した後、Windows.Resources コレクションとのバインド用にBlinkConvertorクラスのインスタンスを作成しようとしています。

        <Window.Resources>
        <local:BlinkConverter x:key="Blink"></local:BlinkConverter>
        </Window.Resources>

ここで、 "local: "と入力した後、Intellisense がクラス BlinkCoverter を検出しません。入力しようとしても、"The type local:BlinkConverter was not found. Verify that you are missing an assembly reference and that all参照されたアセンブリがビルドされました。」

プロジェクト全体を xaml エディターの xmlns の下に追加しましたが。ここで何が問題なのですか? 私は参照を逃しましたか?

Converter クラスを MainWindow.xaml.cs クラスの一部として追加する必要がありますか、または Converter という名前の新しいクラスを追加し、それを MainWindow.xaml.cs クラスにマッピングする必要がありますか?

最初の試行で、最初の試行で Mainwindow.xaml.cs の一部として追加したため、Intellisense は検出されませんでしたが、別のクラスを Converter.cs として追加すると、Intellisense は検出しますが、わかりません私のMainwindow.xaml.csクラスにマップする方法:(

Converter.cs

        public class Converter : IValueConverter
         {
         public object Convert(object value, Type targetType, object parameter,          CultureInfo culture)
       {
          string cellvalue = value.ToString();
          return cellvalue = ("Pass");
        }
      public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
      {
        return false;
      }

MainWindow.xaml.cs

     namespace BlinkApplication
   {
       public partial class MainWindow : Window
     {
          SqlConnection cn;
          SqlDataAdapter da;
          DataSet ds;
          public MainWindow()
     {
         InitializeComponent();
        DataContext = this;
        cn = new SqlConnection(@"Data Source=CZC0239ZWZ\SQLEXPRESS; Initial Catalog      =Student; Integrated Security=true");
        cn.Open();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
    da = new SqlDataAdapter("select * from dbo.View_StudentResults",cn);
    ds = new DataSet();
    da.Fill(ds);
    dataGrid1.ItemsSource=ds.Tables[0].DefaultView;

    }

  }
}
4

2 に答える 2

4

解決策は、BlinkApplication.Converters名前空間の下にmyConverterとしてプロジェクトに別のクラスを追加した後、プロジェクトをビルドします。これにより、xamlインタープリターが見つけるための正しい名前空間でプロジェクトにクラスが追加されます。

次に、MainWindow.xamlで、コンバーターの名前空間を上部に次のように追加します。

      xmlns:local="clr-namespace:BlinkApplication.Converters"

「ローカル」タグをBlinkApplication.Converters名前空間に関連付けるConverters.csファイルで宣言されている名前空間と一致することに注意してください。

宣言された後、ウィンドウまたはその他の制御リソースで使用できます。

于 2012-12-11T10:00:51.093 に答える
1

コンバーターが「パブリック」として定義されていることを確認してください。

于 2012-12-10T12:04:37.487 に答える