2016-11-30 4 views
2

Я пытался добавить линейную диаграмму, используя FSharp.Charting в MainWindow. В MainViewModel у меня есть -Добавление WindowsFormsHost throws XamlParseException

let chart = Chart.Line [ for i in 0 .. 10 -> (i, i * i) ] 
let control = new ChartControl(chart) 
member self.LineChart = control 

и в XAML -

<WindowsFormsHost Child="{Binding LineChart}" /> 

При запуске приложения, я получаю XamlParseException со следующей дополнительной информацией -

'Cannot create unknown type '{http://schemas.microsoft.com/winfx/2006/xaml/presentation}WindowsFormsHost'.' Line number '20' and line position '10'. 

Как решить эту проблему?


Здесь находится @Foggy Finder. Я удалил несколько строк, определяющих TextBlock и кнопки.

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:ViewModels;assembly=AsyncFS" 
xmlns:fsxaml="http://github.com/fsprojects/FsXaml" 
Title="MVVM and XAML Type provider" Height="200" Width="400"> 
<Window.DataContext> 
    <local:MainViewModel/> 
</Window.DataContext> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <WindowsFormsHost Child="{Binding LineChart}" /> 
</Grid> 
+1

Почему бы не использовать 'OxyPlot' или 'LiveCharts'? –

+1

Можете ли вы показать полный XAML (или, по крайней мере, его название)? –

+0

'FSharpCharting' кажется проще, чем' LiveChart'. Я еще не знаком с OxyPlot' @FoggyFinder –

ответ

2

Для того, чтобы использовать WinfowsFormsHost вам нужно добавить ссылку на WindowsFormsIntegration. Но если вы это делаете вы получите:

А «Binding» не может быть установлен на свойстве «ребенок» типа "WindowsFormsHost. «Связывание» может быть установлено только на DependencyProperty объекта DependencyObject.

Легкий способ исправить это, чтобы создать объект непосредственно:

<ContentControl Content="{Binding LineChart}" /> 

...

member self.LineChart = new WindowsFormsHost(Child = control) 

Результат:

enter image description here

+0

Ницца, он работает. –

Смежные вопросы