How to use FsXaml's CommandDependecy/(ies)

162 Views Asked by At

Here is what I have done using FsXaml

type MainViewModel() as self = 
inherit ViewModelBase() 

    let listOfData = self.Factory.Backing(<@self.ListOfData@>, 0 :> obj)
    let selectedId = self.Factory.Backing(<@self.SelectedId@>, 0)

    member x.SelectedId with get() = selectedId.Value 
                        and set value = selectedId.Value <- value;
                                        x.ListOfData <- returnPrice(value) :> obj        
    member x.StockList with get() = stockList
    member x.ListOfData with get() = listOfData.Value and set value = listOfData.Value <- value 

and in xaml

<ComboBox Grid.Row="1" ItemsSource="{Binding StockList}" 
              DisplayMemberPath="Code" 
              SelectedValuePath="Id" SelectedValue="{Binding SelectedId}"/>
<DataGrid Grid.Row="2" ItemsSource="{Binding ListOfData}"/>

How can I use command dependecy of ViewModule to set x.ListOfData instead of calling returnPrice(value) in setter of x.SelectedId?

1

There are 1 best solutions below

5
On

You assumed it right @Foggy Finder. I have replaced the code to -

let selectedId = self.Factory.Backing(<@self.SelectedId@>, 0)  

do
    self.DependencyTracker.AddPropertyDependency(<@self.ListOfData@>,<@self.SelectedId@>)

member x.SelectedId with get() = selectedId.Value and set value = selectedId.Value <- value;
member x.StockList with get() = stockList
member x.ListOfData with get() = returnPrice(self.SelectedId)

and it works!

What is the purpose of self.DependencyTracker.AddCommandDependency() and How to use it?