我打算使用 PeerJs 创建 P2P 连接(数据和后来的视频)。我检查了教程并使用了以下代码。
在浏览器A(Chrome 38)中:
var local;
var remote;
function peerJsInit() {
//listening host
local = new Peer(
{
key: 'myPeerJSKey'
});
local.on('connection', function(conn) {
alert('Connection is open');
conn.on('data', function(data) {
alert('Data: '+data);
});
});
}
function peerSend() {
remote = new Peer(
{
key: 'myPeerJSKey',
debug: true
});
var c = remote.connect('remoteId');
c.on('open', function() {
alert('connected');
c.send(' peer');
});
}
Run Code Online (Sandbox Code Playgroud)
在浏览器B(Chrome 38)中:
var local;
var remote;
function peerJsInit() {
//listening host
local = new Peer({
key: 'myPeerJSKey' …Run Code Online (Sandbox Code Playgroud) 我使用 MVVM,并且必须创建一个 ViewModel 类,该类在打开视图时应加载大量数据。
\n基本上,当我创建视图模型时,它应该使用数据库并获取数据。
\n我首先使用了这种方法:
\npublic class MainViewModel\n{\n public MainViewModel()\n {\n //set some properties\n Title = "Main view";\n //collect the data\n StartLongOperation();\n }\n\n private void StartLongOperation()\n {\n Thread t=new Thread(...);\n t.start();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n它可以在不阻塞 UI 线程的情况下工作并加载数据。
\n后来我发现这个关于如何使用构造函数的指南,它不建议从构造函数开始长操作。
\n\n\n\xe2\x88\x9a 在构造函数中做最少的工作。
\n除了捕获构造函数参数之外,构造函数不应该做太多工作。\n 任何其他处理的成本都应延迟到需要时为止。
\n
就我而言,打开视图时需要数据。
\n我的第一个想法是使用事件。
\n我应该如何避免从构造函数调用长操作?最佳实践是什么?
\nBoolean我的 ViewModel 中有两个属性。我可以使用这两个属性的组合来设置可见性吗?
就像是
local:MvxBind="Visibility Visibility(BoolProperty1 && BoolProperty2)"
Run Code Online (Sandbox Code Playgroud) 我有下表(表A):
ID | Data |
1 | Data1 |
2 | Data2 |
3 | Data3 |
4 | Data4 |
Run Code Online (Sandbox Code Playgroud)
我的表B有1行:
DummyID | Dummy |
1 | Dummy1 |
Run Code Online (Sandbox Code Playgroud)
我必须以下列方式将表A与表B连接起来:
ID | Data |DummyID | Dummy |
1 | Data1 |1 | Dummy1 |
2 | Data2 |1 | Dummy1 |
3 | Data3 |1 | Dummy1 |
4 | Data4 |1 | Dummy1 |
Run Code Online (Sandbox Code Playgroud)
显然我不能在on条款中使用任何ID .
from item in context.TableA
join dummy in context.TableB …Run Code Online (Sandbox Code Playgroud) 我打算用我的 Xamarin.Forms 应用程序支持平板电脑,所以我检查了如何创建不同的布局。
根据此博客条目,我可以OnIdiom在 XAML 代码中使用开关,如下所示:
<Grid.RowSpacing>
<OnIdiom x:TypeArguments="x:Double"
Phone="10"
Tablet="20"/>
</Grid.RowSpacing>
Run Code Online (Sandbox Code Playgroud)
但是,我也打算创建样式以最小化要编写的代码。不幸的是,我无法通过 Idiom 上的开关指定样式值,如下所示:
<Style x:Key="BoldField" TargetType="Label">
<Setter Property="FontAttributes" Value="<OnIdiom x:TypeArguments="FontAttribute" Phone="Bold" Tablet="Normal"/>" />
</Style>
Run Code Online (Sandbox Code Playgroud)
我可以创建一个可以切换成语的样式吗?