我正在尝试使用 WPF 构建一个 SharpGL 应用程序,但是在集成视图模型时遇到了麻烦。
我将 OpenGLControl 的DataContext绑定到ViewModel中的OpenGLControl属性,并为视图模型中的绘图函数创建事件,但它们从未被调用。
OpenGLControl只是显示为黑屏。当我只是在xaml.cs文件后面的代码中实现绘图功能时,它可以工作,但我真的想使用 viewModel。
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
[...]
<StackPanel Orientation="Horizontal">
<GroupBox Width="80" Header="Controls">
<StackPanel>
<TextBox Text="{Binding TranslationX}" />
<TextBox Text="{Binding TranslationY}" />
<TextBox Text="{Binding TranslationZ}" />
</StackPanel>
</GroupBox>
<sharpGL:OpenGLControl x:Name="GLControl" DataContext="{Binding OpenGLControl}" MinWidth="350"/>
</StackPanel>
视图模型代码:
private OpenGLControl openGLControl = new OpenGLControl();
public OpenGLControl OpenGLControl
{
get
{
return openGLControl;
}
set
{
openGLControl = value;
NotifyPropertyChanged(); //Custom implementation of
//INotifyPropertyChanged
}
}
public ViewModel()
{
OpenGLControl.OpenGLDraw += drawEvent;
}
private void drawEvent(object sender, OpenGLEventArgs args)
{
draw(args.OpenGL); // draws a number of vertices, works when used in
// code behind
}