使用转换器中类的实例中的变量?

时间:2010-12-07 21:16:11

标签: c# xaml binding converter

我有一些代码如下:

 public partial class MainWindow : Window
 {
  public bool Adam = true;

  public MainWindow()
  {
   InitializeComponent();
  }

  public class NextEnabled : IValueConverter
  {
   public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
   {

    return Adam;
   }

   public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
   {
    return true;
   }
  }
 }

我希望我的转换器返回的是Adam的价值。我知道它现在不起作用,因为转换器类没有对MainWindow实例的引用。在XAML中,主窗口名为“window_main”,我想引用此实例 - 但不能。

有没有办法做到这一点?使用return window_main.Adam;也不起作用 - 它无法识别此实例。

2 个答案:

答案 0 :(得分:1)

如果您只使用主窗口的单个实例,那么如何将其设为全局?当然,这不是最好的方法,但我真的想不出任何其他解决方案来解决你的问题。

public static class Globals
{
    public static MainWindow MainWindow;
}

public partial class MainWindow : Window
{
    public bool Adam = true;

    public MainWindow()
    {
        Globals.MainWindow = this;
        InitializeComponent();
    }

    public class NextEnabled : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return Globals.MainWindow;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return true;
        }
    }
}

答案 1 :(得分:0)

像这样制作NextEnabled

  public class NextEnabled : IValueConverter
  {
   protected Window window_main;
   public NextEnabled(Window w) { window_main = w; }

   public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
   {

    return window_main.Adam;
   }

   public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
   {
    return true;
   }
  }

创建NextEnabled时必须调用此新构造函数。