6

我创建了一个数据网格,它显示从数据库填充的记录表,并且希望在满足特定条件时为数据网格的单元格设置动画。为此,我创建了一个名为BlinkConverter的转换器类,它继承了 IValueConverter。

为了将此转换器投入使用,我已将项目命名空间映射到 xaml 编辑器

       xmlns:local="clr-namespace:BlinkApplication"

注意: BlinkApplication 是我的项目的名称

添加后,我正在尝试创建我的BlinkConvertor类的实例,以便与 Windows.Resources 集合绑定为

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

在这里,我的 Intellisense 在我输入"local:"后没有检测到 BlinkCoverter 类,即使我尝试输入,我也有一个错误,指出 "The type local:BlinkConverter was not found. 验证您是否缺少程序集引用并且所有已构建引用的程序集。”

即使我在我的 xaml 编辑器中的 xmlns 下添加了整个项目。这里有什么问题?我错过了任何参考吗?

我是否必须将 Converter 类添加为 MainWindow.xaml.cs 类的一部分,或者添加一个名为 Converter 的新类,然后将其映射到 MainWindow.xaml.cs 类?

因为在第一次尝试时,我在第一次尝试时添加了作为 Mainwindow.xaml.cs 的一部分,然后我的 Intellisense 没有检测到,但是当我添加一个单独的类作为 Converter.cs 时,我的 Intellisense 检测到但我不知道映射到我的 Mainwindow.xaml.cs 类的方式:(

转换器.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;
      }

主窗口.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"

请注意,它与 Converters.cs 文件中声明的命名空间匹配,该文件将“本地”标签与 BlinkApplication.Converters 命名空间相关联。

声明后,我可以在窗口或任何其他控制资源中使用它。

于 2012-12-11T10:00:51.093 回答
1

确保您的转换器定义为“公共”。

于 2012-12-10T12:04:37.487 回答