我有一些代码如下:
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;
也不起作用 - 它无法识别此实例。
答案 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时必须调用此新构造函数。