我是WPF + Neutronium(html,css,javascript)混合应用程序,

当在ListBox WPF组件中发生SelectionChanged事件时,csharp会像以下那样调用代码隐藏:

private void searchList_SelectionChanged(object sender, SelectionChangedEventArgs e)


在此方法内部,我需要将JavaScript命令发送到Neutronium(WPF:HTMLViewControl)。

但是我在中子HTMLViewControl组件中找不到任何javascript执行命令。

我怎么做?

中子:https://github.com/David-Desmaisons/Neutronium

最佳答案

中子哲学是将MVVVM模式用作JS与C#之间的通信。

因此,对searchList_SelectionChanged做出反应的最佳方法是更新将触发HTML端更改的视图模型属性。

使用Vue的伪代码:
C#:

private void searchList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   vm.Selected = selected;
}


Vm:

public class MainVm
{
    private SelectedObject _Selected ;
    public SelectedObject Selected
    {
        get { return _Selected ; }
        set
        {
           _Selected = value;
           PropertyChanged(this, new PropertyChangedEventArgs("Selected"));
        }
    }
//...
}


Vue模板:

<component :element:="viewModel.Selected ">
</component >


中子将负责此处的所有通信。

如果您需要更具体的内容,甚至可以在所选元素上使用Vue.js watch

我建议您看一下:https://github.com/NeutroniumCore/Neutronium.SPA.Demohttps://github.com/NeutroniumCore/CodeDependencyScanner
 和https://github.com/David-Desmaisons/Music.Cover.Finder是使用Neutronium的好例子。

10-06 02:59