代码之家  ›  专栏  ›  技术社区  ›  bolov

将DataContext设置为StaticResource的属性

  •  0
  • bolov  · 技术社区  · 7 年前

    我有一个 Controller 管理顶级组件的类:

    public class FooViewModel {}
    
    public class Controller
    {
        public FooViewModel Foo1ViewModel {get; protected set;} // = new ...;
    }
    

    我有一个静态资源 控制器 :

    <Application.Resources>
        <local:Controller x:Key="AppController" />
    </Application.Resources>
    

    我希望Windows和UserControls具有 控制器 .

    据我所知,将DataContext设置为 控制器 本身(这不是我想要的)

    <Window.DataContext>
        <StaticResource ResourceKey="AppController" />
    </Window.DataContext>
    

    但我不能将它设置为它的属性

    <Window.DataContext>
        <!-- something like this path: -->
        <!--  AppController.Foo1ViewModel -->
    </Window.DataContext>
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   mm8    7 年前

    使用A Binding :

    <Window.DataContext>
        <Binding Path="Foo1ViewModel" Source="{StaticResource AppController}" />
    </Window.DataContext>
    
        2
  •  3
  •   Clemens    7 年前

    使用控制器实例作为源的绑定:

    <Window ...
        DataContext="{Binding Foo1ViewModel, Source={StaticResource AppController}}">