小编mar*_*l82的帖子

JavaScriptSerializer().Serialize:PascalCase到CamelCase

我有这个javascript对象

var options:
 {
        windowTitle         : '....',
        windowContentUrl    : '....',
        windowHeight        : 380,
        windowWidth         : 480
}
Run Code Online (Sandbox Code Playgroud)

我有这个C#类

public class JsonDialogViewModel
    {
        public string WindowTitle               {   get;    set;    }
        public string WindowContentUrl          {   get;    set;    }
        public double WindowHeight              {   get;    set;    }
        public double WindowWidth               {   get;    set;    }

    }
Run Code Online (Sandbox Code Playgroud)

你看,我的符号是C#中的PascalCase,而我的Javascript是CamelCase.通常的惯例.

我正在使用JavaScriptSerializer().Serialize来序列化我的C#对象并在我的Javascript代码中使用它.

然而,我面临的问题是PascalCase到CamelCase,JavaScriptSerializer().Serialize无法处理.

您有什么建议来解决这个翻译?

谢谢

javascript c# serialization camelcasing pascalcasing

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

如何在WPF中设置复选框的初始状态(在XAML或代码中)?

我在表单,delete按钮和confirm delete复选框上有两个简单的相关控件.

这个想法是为了防止意外删除(不用担心,稍后会添加撤消),但如果他们愿意,仍然允许用户删除而不需要烦人的确认.

但是,我希望设置复选框的初始状态.XAML代码目前是:

<CheckBox Margin="0 5 0 0"
          x:Name="chkConfirmDel"
          Checked="chkConfirmDel_Change">
    Confirm delete?
</CheckBox>
Run Code Online (Sandbox Code Playgroud)

但我无法在XAML或Window_Loaded()代码中看到强制初始状态的任何明显属性.

c# wpf checkbox xaml

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

如何将可选指针参数从C++代码转换为C#

我在c ++中有这样的功能:

// C++
bool Foo(int* retVal = NULL)
{
    // ...
    if (retVal != NULL)
        *retVal = 5;
    // ...
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过两种方式使用函数:

int ret;
Foo(&ret);

Foo();
Run Code Online (Sandbox Code Playgroud)

当我用C#编写代码时,我使用了ref关键字:

// C#
bool Foo(ref int retVal = null)
{
    // ...
    if (retVal != null)
    {
        retVal = 5;
    }
    // ...
    return true;
}
Run Code Online (Sandbox Code Playgroud)

但编译说:

ref或out参数不能具有默认值.

我怎么解决这个问题?

c# c++ arguments reference

5
推荐指数
1
解决办法
244
查看次数

每次调用方法时创建对象的新实例

Messenger.Default.Register<OpenWindowMessage>(this, message =>
{
    var adventurerWindowVM = SimpleIoc.Default.GetInstance<AdventurerViewModel>();
    adventurerWindowVM.Adv = message.Argument;
    var adventurerWindow = new AdventurerView() 
    {
        DataContext = adventurerWindowVM
    };
    adventurerWindow.Show();
});
Run Code Online (Sandbox Code Playgroud)

这段代码很简单; 它只是打开一个新窗口并设置新窗口的DataContext.我遇到的问题是,如果我执行两次,第一个实例的内容将被覆盖并设置为第二个实例的内容,因为adventurerWindowVM是两个窗口的DataContext,每次调用此代码时都会覆盖它.我正在寻找一种方法来防止这种情况; 我希望能够使用此消息打开多个窗口并使每个窗口都是唯一的,但到目前为止我还没有想出办法.任何建议将不胜感激.我为这个模糊的标题道歉; 我不确定这个问题的名称.(另外,我知道这不是一种方法.这个代码块会被调用什么?)

更新:我正在使用MVVM Light,我的代码基于一个例子,有人在这个答案中提供给我:https://stackoverflow.com/a/16994523/1667020

以下是我的ViewModelLocator.cs中的一些代码

public ViewModelLocator()
{
    _main = new MainViewModel();

    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
    SimpleIoc.Default.Register<GameViewModel>();
    SimpleIoc.Default.Register<AdventurerViewModel>();
}
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm-light

3
推荐指数
1
解决办法
5130
查看次数

像List.Exists(谓词)这样的LINQ方法?

我正在寻找像LINQ这样的方法List.Exists(predicate).

bool exists = mylist.Exists(p => p.Name == "Kamila");

bool exists = collection.??????(p => p.Name == "Kamila");
Run Code Online (Sandbox Code Playgroud)

c# linq

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