小编Bob*_*Bob的帖子

WPF MVVM:如何关闭窗口

点击后,我Button关闭了我的窗口:

<Button x:Name="buttonOk"  IsCancel="True">Ok</Button>
Run Code Online (Sandbox Code Playgroud)

这很好,直到我添加CommandButtonie

<Button x:Name="buttonOk" 
        Command="{Binding SaveCommand}" 
        IsCancel="True">Ok</Button>
Run Code Online (Sandbox Code Playgroud)

现在它不会因为我正在处理它而关闭Command.我可以通过EventHandler输入和调用this.Close()ie 来解决这个问题

<Button x:Name="buttonOk" 
        Click="closeWindow" 
        Command="{Binding SaveCommand}" 
        IsCancel="True">Ok</Button>
Run Code Online (Sandbox Code Playgroud)

但现在我的代码背后有代码,即方法SaveCommand.我使用的是MVVM模式,SaveCommand是我代码中唯一的代码.

我怎么能以不同的方式做到这一点,以免背后使用代码?

.net c# wpf xaml mvvm

67
推荐指数
7
解决办法
11万
查看次数

C#:如何在特定时间启动线程

如何在一天中的特定时间(例如16:00)启动后台线程?

因此,当应用程序启动时,线程将一直等到那个时间.但如果应用程序在该时间之后启动,那么该线程将立即运行

ThreadPool.QueueUserWorkItem(MethodtoRunAt1600);

.net c# multithreading

33
推荐指数
4
解决办法
8万
查看次数

WPF:如何从不同程序集中的窗口开始

我用谷歌搜索了它仍然无法使它工作

我有一个WPF应用程序,并希望从Main.xaml开始,它位于不同的程序集中.两个组件都在同一位置.

我怎样才能做到这一点?我从XAML中取出了StartupUri并尝试了这些以及一些细微的变化:

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        StartupUri = new Uri("/CompanyName.VisualStudio.UI;CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml", UriKind.Relative);
        //StartupUri = new Uri(@"pack://application:,,,/ CompanyName.VisualStudio.UI;CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml");

    }
Run Code Online (Sandbox Code Playgroud)

程序集的名称是"CompanyName.VisualStudio.UI",名称空间是"CompanyName/VisualStudio/UI/DatabaseManager/Main.xaml"

有任何想法吗?

.net c# vb.net wpf xaml

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

WPF选项卡控件:如何获取当前选定的选项卡?

在我的选项卡SelectionChanged事件中(这是正确的事件,我找不到选项卡更改事件?),如何访问新选项卡?

此外,在正常代码的此事件之外,如何访问当前选定的选项卡?

  TabControl.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(TabControl_SelectionChanged);

  void TabControl_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
  {
      //How so access my currently selected tab???
  }
Run Code Online (Sandbox Code Playgroud)

.net c# wpf tabcontrol selecteditem

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

WPF:对于小型应用程序,Prism是否过度杀伤?

如果我不将我的应用程序拆分成不同的模块(否则我会认为Prism将会成为可行的方法)我应该使用Prism吗?

我知道Prism提供了一个方便的实现ICommand(我可以在代码页中自己完成)并给我们IEventAggregator但是所有Bootstrapper,Shell,ModuleCatalog的东西真的有帮助吗?

为什么不使用MVVM模式(没有Prism)来分离你的顾虑,这样你的应用程序才是可测试的,鲍勃是你的叔叔!

.net c# wpf prism mvvm

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

Oracle:如何在where子句中按日期和时间进行过滤

我怎样才能做到这一点:

select *
from tableName
where SESSION_START_DATE_TIME > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )
Run Code Online (Sandbox Code Playgroud)

SESSION_START_DATE_TIME的格式为'12/01/2012 13:16:32.000'

我试过了 where To_Date (SESSION_START_DATE_TIME, 'DD-MON-YYYY hh24:mi') > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )

但无论我尝试什么,我都会得到错误: SQL command not properly formed

sql oracle

13
推荐指数
4
解决办法
16万
查看次数

自定义命令不起作用

在我的XAML中我有这个:

<UserControl.CommandBindings>
    <CommandBinding Command="Help"
   CanExecute="HelpCanExecute"
   Executed="HelpExecuted" />
</UserControl.CommandBindings>

<MenuItem Header="Help" Command="Help" />
Run Code Online (Sandbox Code Playgroud)

这很好用.因此,当我单击上下文菜单时,将调用HelpExecuted().

现在我想再做同样的事情,除了使用自定义命令而不是帮助命令.所以我做的是:

public RoutedCommand MyCustomCommand = new RoutedCommand();
Run Code Online (Sandbox Code Playgroud)

并将我的XAML更改为:

<UserControl.CommandBindings>
    <CommandBinding Command="MyCustomCommand"
   CanExecute="HelpCanExecute"
   Executed="HelpExecuted" />
</UserControl.CommandBindings>

<MenuItem Header="Help" Command="MyCustomCommand" />
Run Code Online (Sandbox Code Playgroud)

但我得到错误:无法将属性'Command'中的字符串'MyCustomCommand'转换为'System.Windows.Input.ICommand'类型的对象.CommandConverter无法从System.String转换.

我在这里错过了什么?请注意我想在XAML中完成所有操作,即不想使用CommandBindings.Add(new CommandBinding(MyCustomCommand ....)

.net c# vb.net wpf xaml

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

WPF:如何在运行时更改CurrentUICulture

我正在尝试更改我的WPF应用在单击事件中使用的语言,但它不会更改.

private void menuItemGerman_Click(object sender, RoutedEventArgs e)
{
   Settings.Default.Culture = "de-DE";

   Thread.CurrentThread.CurrentCulture = new CultureInfo(Settings.Default.Culture);
   Thread.CurrentThread.CurrentUICulture = new CultureInfo(Settings.Default.Culture);
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

.net c# vb.net wpf

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

使用带有异步方法的秒表

我有一些代码如下:

public void Start()
{
    var watch = new Stopwatch();
    watch.Start();

    Task.Factory.StartNew(MyMethod1);
    Task.Factory.StartNew(MyMethod2);

    watch.Stop();
    Log(watch.ElapsedMilliseconds);
    Task.Factory.StartNew(MyMethod3);
}
Run Code Online (Sandbox Code Playgroud)

因为MyMethod1和MyMethod2被称为异步watch.Stop()在错误的时间被调用.我如何确保在MyMethod1和MyMethod2完成后调用和记录.Stop确保MyMethod3不必等待.

我想在我的Start()方法中保留所有秒表功能,而不是记录我的3种方法中的任何一种,即MyMethod1,MyMethod2和MyMethod3

.net c# multithreading .net-4.0 task-parallel-library

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

.NET:是否有一个类将一个类的属性复制到另一个类

我写了一个函数,将一个类的属性复制到另一个类,所以制作一个对象的副本.

所以像

MyObject myObject = myOtherObject.MyCustomCopy(myObject)
Run Code Online (Sandbox Code Playgroud)

其中myObject和myOtherObject属于同一类型.我这样做是基本做的

myObject.prop1 = myOtherObject.prop1
myObject.prop2 = myOtherObject.prop2
myObject.prop3 = myOtherObject.prop3
return myObject
Run Code Online (Sandbox Code Playgroud)

我很确定在过去我使用.NET对象自动完成这个,通过反思我猜,但不记得了......或者我想象这样的方法存在?

是的我知道自动映射器,但我确信(现在不是那么多)有一个.NET对象可以完成这项工作.也许不吧!

.net c# vb.net

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