我是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.Demo,https://github.com/NeutroniumCore/CodeDependencyScanner
和https://github.com/David-Desmaisons/Music.Cover.Finder是使用Neutronium的好例子。