小编mis*_*han的帖子

使用属性中的格式字符串

我所处的情况如下:

我有一个插值字符串,如下所示:

DateTime DateOfSmth;
string PlaceOfSmth;
$"{DateOfSmth}, {PlaceOfSmth}".Trim(' ',',');
Run Code Online (Sandbox Code Playgroud)

以及应该在其中使用的格式:

string Format = "{0:dd.MM.yyyy}";
Run Code Online (Sandbox Code Playgroud)

现在我想在插值字符串中使用属性Format中的格式,但我不知道如何.

IE:我喜欢这样的结果:

$"{DateOfSmth:Format}, {PlaceOfSmth}".Trim(' ',',');
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

c# c#-6.0

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

将委托转换为System.Action

介绍

在我的WP8 C#/ XAML项目中,我正在使用事件通知我的视图已完成某些异步过程.

我有两种类型的代表.

我正在从这些代表创建事件,并且有几个人通知我的观点,即某些操作已完成或已启动(为了显示进度条,导航到另一个页面,禁用某些控件等).

为了引发这些事件,我想创建一个私有的"通知方法",这将引发这些代表.

我想到的方法是在下面的代码示例中作为fireUpEvent方法.

代码示例

ReturnState枚举

public enum ReturnState : int
{
  state1 = 0,
  ...            //for the purpose of the presentation
  state6 = 15
  ...
}
Run Code Online (Sandbox Code Playgroud)

事件和方法的定义

public delegate void LoadingStartedEventHandler();
public delegate void LoadingFinishedEventHandler(ReturnState state);

public event LoadingStartedEventHandler LoadingStarted;
public event LoadingFinishedEventHandler LoadingFinished;

private void fireUpEvent(Action<ReturnState> action, Returnstate parameter)
{
  if(action != null)
  {
    action(parameter);
  }
}

private void fireUpEvent(Action action)
{
  if(action != null)
  {
    action();
  }
}
Run Code Online (Sandbox Code Playgroud)

用法 …

c# event-handling windows-phone-8

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

如何在没有参数的情况下实现ICommand

在我的项目中,我想使用MVVM(&命令)。我已经开始学习有关ICommand的命令和实现。

我想创建ICommand没有参数的实现。 (触发数据加载/数据刷新等。-我不需要任何参数,因此尝试创建不带参数的命令似乎很自然)

这是我正在使用的代码:

using System.Windows.Input;

public class NoParameterCommand : ICommand
{
    private Action executeDelegate = null;
    private Func<bool> canExecuteDelegate = null;
    public event EventHandler CanExecuteChanged = null;

    public NoParameterCommand(Action execute)
    {
        executeDelegate = execute;
        canExecuteDelegate = () => { return true; };
    }
    public NoParameterCommand(Action execute, Func<bool> canExecute)
    {
        executeDelegate = execute;
        canExecuteDelegate = canExecute;
    }

    public bool CanExecute()
    {
        return canExecuteDelegate();
    }
    public void Execute()
    {
        if (executeDelegate != null)
        {
            executeDelegate();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我遇到了有关不以正确方式实现ICommand接口的错误( …

c# mvvm icommand windows-phone-8

4
推荐指数
2
解决办法
3908
查看次数

WP8如何创建基页并使用它

我用谷歌搜索,但没有得到任何有用的资源,所以我决定问.

问题:

我有一个Windows Phone 8 C#/ XAML .NET 4.5应用程序,它将有几个页面(15 - 50),它们将具有相似的外观+相同的datacontext设置为一个ViewModel实例:

    --------------------------
    |logo         usermenu(v)|
    --------------------------
    |                        |
    |                        |
    |                        |
    |     ..variable..       |
    |     ..content...       |
    |                        |
    |                        |
    --------------------------
Run Code Online (Sandbox Code Playgroud)

题 :

我在这件事上找不到任何可用的东西,有人可以解释一下怎么做吗?

(我是菜鸟 - 这意味着我很感激任何有用的信息,但更多的是对傻瓜的解释)

  • 如何创建一个基页/祖先来从中派生我的页面?

  • 有没有办法在祖先中设置datacontext?

  • 如何使用该基页/祖先?

PS:如果你想知道为什么我想要有相同datacontext的页面,那么我在之前提出的这个问题中有更多关于它的文章

c# xaml custom-controls windows-phone-8

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

从 QGraphicsScene/QgraphicsItemGroup/QGraphicsView 中正确删除项目

我正在尝试使用可移动的控制点 usig QGraphicsView, QGraphicsScene&&绘制一个图QGraphicsItemGroup。我遇到的问题是我找不到任何删除/删除项目的方法。

我的想法如下:

我将有一个 QGraphicsView,在它上面将是可移动的插值点,在它下面将绘制通过这些点的图。

为了实现这一点,我正在考虑使用两个(或更多)QGraphicsItemGroups。- 一个用于插值点,无法删除,因为我需要拖动它们 - 一个用于显示在它们下方的实际绘图

为此,我要将线条添加到第一组中并显示它们。但是会有很多重绘,我现在不知道的是如何正确地从QGraphicsView/ QGraphicsScene/ 中删除项目,QGraphicsItemGroup所以它不会再显示了。请记住,我只需要删除/替换一组项目而不删除所有其他项目。

我正在阅读文档和教程,但找不到任何有用的东西。

c++ qt qtgui

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

在XAML中设置TextBox/PasswordBox样式

我一直想知道是否有更简单的方法来更改一个属性,然后在Windows Phone 8中重新整理整个ControlTemplate.

我最近发现自己需要更改PasswordBox的背景(选择/键入时显示的背景)而不更改任何其他内容.我知道有一种方法可以重新创建整个ControlTemplate(因为它对我的品味来说很大,而且我有点迷失它 - 我是一个新手).

其他(最好更容易)的选择是如何做到的?如果是这样,哪个?

我问的原因是因为我正在创建需要在Android,iOS和Windows Phone上看起来几乎相同的应用程序(Android和iOS应用程序由其他人完成,我正在使用WP App并且设计是给出).

应用程序需要在用户的手机上查看用户选择的主题的相同方面.

由于文本是白色的,并且在写入TextBox/PasswordBox时是黑色主题,因此背景也会变为白色 - 结果是您无法看到您正在键入的内容.

例

更改"前台打字时"或"打字后背景"更容易吗?如何在不重新创建整个ControlTemplate的情况下执行此操作?

xaml windows-phone-8

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

使用TabIndex在字段之间"Tabbing"

问题

使用.NET 4.5的Windows Phone 8 C#/ XAML应用程序中,我试图通过表单"迭代".换句话说,当用户按下"Enter"键时,焦点变为另一个TextBoxPasswordBox.

我的代码现在看起来如何

XAML:

<TextBox TabIndex="0" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="1" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="2" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="3" KeyDown="TextBox_KeyDown"/>
<TextBox TabIndex="4" KeyDown="TextBox_KeyDown"/>
....
Run Code Online (Sandbox Code Playgroud)

C#CodeBehind:

using System.Windows.Input;

private void TextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key.Equals(Key.Enter))
    {
        int index = ((TextBox)sender).TabIndex + 1;
        //and here is what I've been missing
        //basically the code to select next tabindex
        //and set focus on it using Focus() method...
    }
}    
Run Code Online (Sandbox Code Playgroud)

  1. 如何选择下一个元素来专注于TABINDEX …

c# xaml windows-phone-8

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

CsvHelper - 验证整行

问题

我最近开始更多地了解 csvHelper,我需要有关如何实现我的目标的建议。

我有一个 CSV 文件,其中包含一些用户记录(数千到数十万条记录),我需要解析该文件并验证/处理数据。我需要做的是两件事:

  1. 我需要一种方法在读取时验证整行

    • 该记录包含日期范围,我需要验证它是一个有效的范围
    • 如果不是,我需要将有问题的行写入错误文件
  2. 一条记录也可以在不同的日期范围内多次出现,我需要验证这些范围是否重叠,如果重叠,请将整个原始行写入错误文件

我基本上可以通过一种方法来保留整个原始行以及解析的数据,但是在原始数据仍然可用的情况下验证整个行的方法会更好。


问题

是否有一些隐藏在某处的事件/操作可以用来在数据行创建之后但在将其添加到集合之前验证数据行?

如果没有,有没有办法将整个原始行保存到记录中,以便我可以在解析该行后验证该行,如果它无效,请对它们执行我需要的操作?


我有代码

我创建的是这样的记录类:

class Record
{  //simplified and omitted fluff for brevity
   string Login
   string Domain
   DateTime? Created
   DateTime? Ended
}
Run Code Online (Sandbox Code Playgroud)

和一个类映射:

class RecordMapping<Record>
{    //simplified and omitted fluff for brevity
     public RecordMapping(ConfigurationElement config)
     {
        //..the set up of the mapping...
     }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它们:

public ProcessFile(...)
{
  ...
  using(var reader = StreamReader(...))
  using(var csvReader = new CsvReader(reader))
  using(var errorWriter = new StreamWriter(...))
  {
      csvReader.Configuration.RegisterClassMap(new RadekMapping(config));
      
      //...set up …
Run Code Online (Sandbox Code Playgroud)

c# csvhelper

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