0

我想通过代码从我的 ViewModelClass 中对视图进行操作,而不仅仅是修改 XAML 绑定到的属性。

member x.SelectedUdl 
  with get() = selectedudl
  and set value = selectedudl  <- value
                  //do fancy things like 
                  //this.Quotes12.ItemsSource <- asyncquotes.gethisto (undls |> Seq.head, 2012)

但是要做到这一点,我需要对组件本身的引用。
我有什么方法可以从 xaml 或其他方式添加对“this”的引用吗?

   <UserControl.DataContext>
      <ViewModel:QuotesViewModel>
           <x:Arguments>
              THIS
           </x:Arguments>
      </ViewModel:QuotesViewModel>
   </UserControl.DataContext>
   <DockPanel>
type QuotesViewModel(this:Window) =
    inherit ViewModelBase()

编辑

我终于在第一个位置添加了一个 Global.fs 文件,以便所有编译单元都可以访问它

module Global

open FSharpx

type MainWindow = XAML<"MainWindow.xaml">

type Singleton private () =
   static let instance = Singleton()
   let mutable ivalue : MainWindow = null

   static member Instance = instance
   member this.Value 
      with get () = ivalue  
      and set value = ivalue  <- value

let window () =  Singleton.Instance.Value

请注意,它使用 XAML 类型提供程序,因此您必须将 FMVVM 模板 MainWindow 的 Frame 上移一级才能从强类型访问中受益。

然后在视图中,可以添加

Global.window().TextBox.Text <- "hello"

有了这个,我们可以以强类型的方式使用声明方式或代码方式。

初始化很容易完成

let mainWindow = MainWindow()
Global.Singleton.Instance.Value <- mainWindow

// Application Entry point
[<STAThread>]
[<EntryPoint>]
let main(_) =(new Application()).Run(mainWindow.Root)

(欢迎推荐,我刚开始看wpf ..)

4

0 回答 0