Как наследовать DataContext? - PullRequest
       16

Как наследовать DataContext?

0 голосов
/ 22 марта 2012

обратите внимание, что я использую F #, что специфично для WPF.Что нужно сделать, чтобы установить DataContext дочерних элементов управления на любой глубине?В частности, как установить контекст данных для управления с именем «TargetControl».Контекст проблемы:

App.xaml:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        >
    <Frame Name="Frame" Source="MainWindow.xaml" />
</Window>

MainWindow.xaml:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <TabControl Grid.Row="0" Grid.Column="0" Name="mainTab">
            <!-- Tests work area -->
            <TabItem Header="Проверка проекта">
                <Frame Source="TestsPropagate.xaml" />
            </TabItem>
        </TabControl>
    </Grid>
</UserControl>

TestsPropagate.xaml

<UserControl 
    Name="TargetControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <TextBox Text="{Binding Path=testField}" />
</UserControl>

Мой загрузчик для запуска этой шапки:

[<STAThread>]
[<EntryPoint>]
let main(_) = //(new Application()).Run(Application.Current) //mainWindowViewModel)
    OFTD.DOM.ExtraEntities.Verification.EnitiesInitializer.InitializeReaders()
    let app = new Application()
    let view = Application.LoadComponent( new System.Uri("App.xaml", UriKind.Relative) ) :?> Window

    let vm = new AppViewModel() // is data context to TargetControl    
    app.Run(view)

1 Ответ

1 голос
/ 22 марта 2012

Не уверен в синтаксисе fsharp, но это должно иметь смысл:

let vm = new AppViewModel() // is data context to TargetControl    
view.DataContext <- vm
app.Run(view)
...