Я пытаюсь создать приложение SharpGL с помощью WPF, но у меня возникают проблемы с интеграцией модели представления.
Я привязываю DataContext элемента OpenGLControl к свойству OpenGLControl в моей ViewModel и создаю события для функций рисования в модели представления, но они никогда не позвони.
OpenGLControl отображается как черный экран. Когда я просто реализую функцию рисования в коде файла xaml.cs, он работает, но я действительно хочу использовать модель представления.
<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>
Код ViewModel:
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
}