小编Mat*_*las的帖子

向Java程序员教授JavaScript

几个星期后,我将有机会向我的同事介绍JavaScript.此前的项目主要使用Java和C++.我需要解释的JavaScript最重要或最重要的方面是什么?我列出了一些我已经确定的重要事项:

  • 哈希/词典作为对象
  • 原型继承
  • 关闭
  • 捆绑

我也将从A重新介绍到JavaScript.

我错过了什么?我正在寻找任何东西,从大语言功能到小问题.

javascript

27
推荐指数
4
解决办法
1万
查看次数

绑定在WPF数据网格文本列中

我正在尝试构建一个数据网格,其中一列是以该字体显示的字体名称.以前,我正在使用列表框,我在其中定义了以下模板:

<TextBlock Text="{Binding Path=Name}" FontFamily="{Binding Path=Name}"/>
Run Code Online (Sandbox Code Playgroud)

这很好用.所以,我调整了数据结构(Name变为Font.Name)并移动到数据网格上试试这个:

<dg:DataGridTextColumn Binding="{Binding Font.Name}" 
    FontFamily="{Binding Font.Name}" IsReadOnly="True" Header="Font"/>
Run Code Online (Sandbox Code Playgroud)

现在字体名称都以默认字体显示,我收到此错误:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or 
FrameworkContentElement for target element. 
BindingExpression:Path=Font.Name; DataItem=null; target element is 
'DataGridTextColumn' (HashCode=56915998); target property is 'FontFamily' 
(type 'FontFamily')
Run Code Online (Sandbox Code Playgroud)

处理自定义控件的一些Google结果建议将属性从DependencyObject更改为FrameworkElement,但是我必须继承DataGridTextColumn并定义我自己的属性才能这样做 - 必须有更好的方法.

我尝试了几种不同的绑定方法,包括尝试在我的数据类中使用distinct属性更改字体大小(即FontSize="{Binding FontSize}").它们都导致了与上面相同的错误.

谁知道我在做错了什么?

编辑:

感谢Jared的回复,我发现了以下内容:

http://blogs.msdn.com/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx

该方法看起来很合理,但我需要创建一个绑定,引用每行的DataContext中的正确元素,而不是为整个列共享单个值.

代码背后:

fontDataGrid.DataContext = from font 
    in new InstalledFontCollection().Families;
Run Code Online (Sandbox Code Playgroud)

XAML:

Binding="{Binding Font.Name}"
FontFamily="{Binding (FrameworkElement.DataContext).Font.Name, 
    RelativeSource={x:Static RelativeSource.Self}}"
Run Code Online (Sandbox Code Playgroud)

使用上面的XAML显然不正确,因为DataContext是整个字体集合.但我不能索引集合,因为我不知道行号是什么(或者我?).我可以用一些方法来实现这个目标吗?

第二个问题 - 为什么即使没有DataContext,Binding属性似乎也能正常工作?它是在寻找ItemsSource吗?

.net data-binding wpf xaml datagrid

26
推荐指数
1
解决办法
6万
查看次数

我是否需要在使用NewIntArray创建的数组上调用ReleaseIntArrayElements?

我有一个本地方法,可以对位图进行一些操作.在方法内部,我通过方法调用获取图像数据,该方法调用将数据写入jintArray我创建的参数NewIntArray:

jintArray pixels = env->NewIntArray(width * height);

我不需要将此数组返回给调用的Java代码 - 它仅用于在此方法中进行处理.我需要打电话ReleaseIntArrayElementspixels?如果是这样,我将为elems参数传递什么,因为我不需要将其复制回Java数组?

void (JNICALL *ReleaseIntArrayElements) (JNIEnv *env, jintArray array, jint *elems, jint mode);

java java-native-interface

11
推荐指数
1
解决办法
5827
查看次数

jQuery和Java小程序

我正在开发一个项目,我们在部分UI(特别是地图)中使用Java applet,但是在HTML/JavaScript中围绕applet构建其余UI,通过LiveConnect/NPAPI与applet通信.我知道,有点奇怪,但我们假设设置没有讨论.我开始计划使用jQuery作为我的JavaScript框架,但我遇到了两个问题.

发出第一个:

选择applet不提供对applet方法的访问.

Java的:

public class MyApplet extends JApplet {
  // ...
  public String foo() { return "foo!"; }
}
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

var applet = $("#applet-id");
alert(applet.foo());
Run Code Online (Sandbox Code Playgroud)

运行上面的JavaScript会导致

$("#applet-id").foo is not a function

这与Prototype相反,Prototype类似的代码确实有效:

var applet = $("applet-id");
alert(applet.foo());
Run Code Online (Sandbox Code Playgroud)

那么...... applet方法在哪里?

发出第二个:

Firefox 2中的jQuery和applet存在一个已知问题:http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm

这是一个很长的镜头,但有人知道一个变通方法吗?我怀疑这个问题不可修复,这意味着要切换到Prototype.

谢谢您的帮助!

javascript java jquery applet

10
推荐指数
1
解决办法
1万
查看次数