相关疑难解决方法(0)

从Windows窗体转换为WPF

很长一段时间以来,我一直坚持使用Windows Forms开发(从VB6开始,一直到C#.NET 4.5),而且我已经达到了Windows Forms可以做的极限,两者都使用纯.NET和本机代码的特殊效果.

我知道WPF是未来(目前),Windows Forms正在放慢成为一种被弃用的技​​术.

我曾经尝试过学习WPF和XAML,但是我遇到了WPF的新设计师......与Windows Forms设计师相比,它似乎很难使用...当然......这只是一个学习曲线,在某些时候,我打算继续学习WPF.

与此同时,我想知道.NET的WPF设计器是否有更适合Windows Forms开发人员的替代方案?

c# windows wpf windows-forms-designer winforms

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

WPF编程方法论

在WPF编程我的APP 3个月后,我第二次想到了我编写应用程序的方式(我知道这可能为时已晚).在我的APP上,我使用的是我的工具管理的软件的API.我的DAL包含16个类,其中3个是单例.我在.cs文件中有一些逻辑,而且XAML偏离正轨.我的问题是,我看到很多评论认为用WPF编写的应用程序应该使用MVVM,这将使代码更具可用性和可读性,我可以将我的代码转换为MVVM吗?什么是MVVM的实际含义(不是维基百科或手册定义)?

我也使用SQL查询,我读了一篇关于EF(实体框架)的论文,MVVM和EF可以在同一个项目中共存吗?

我知道我的问题是一个新手问题(我是新手:P)和一个抽象的问题,但我想知道我写的应用程序将是我此时写的最好的:)

wpf entity-framework mvvm .net-4.5

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

使用匿名方法调用WPF Dispatcher

我刚刚在C#.Net 4.0 WPF后台线程中意识到这不起作用(编译器错误):

Dispatcher.Invoke(DispatcherPriority.Normal, delegate()
{
    // do stuff to UI
});
Run Code Online (Sandbox Code Playgroud)

从一些例子中我发现它必须像这样铸造:(Action)delegate().然而,在其他示例中,它被转换为其他类,例如System.Windows.Forms.MethodInvoker.

谁能告诉我上面这个例子究竟出了什么问题呢?我也尝试用其他方法重现它,但它总是在没有强制转换的情况下工作:

delegate void MyAction();
void Method1(MyAction a) {
    // do stuff
}

void Method2(Action a) {
    // do stuff
}

void Tests()
{
    Method1(delegate()
    {
        // works
    });

    Method2(delegate()
    {
        // works
    });

    Method1(() =>
    { 
        // works
    });

    Method2(() =>
    {
        // works
    });

    Method2(new Action(delegate()
    {
        // works
    }));

    new System.Threading.Thread(delegate()
    {
        // works
    }).Start();
}
Run Code Online (Sandbox Code Playgroud)

那么最好的(最优雅的,更少冗余的)调用Dispatcher的方式是什么,并且它的特殊之处在于代理必须被转换?

.net c# wpf delegates dispatcher

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

为什么 UI 不更新(WPF)?

我正在尝试 WPF 绑定。我写了一个小应用程序,但有问题,我的用户界面没有更新。这是我的代码:

<Grid>
    <Button Content="Button" HorizontalAlignment="Left" Margin="345,258,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    <TextBox x:Name="text" HorizontalAlignment="Left" Height="23" Margin="75,165,0,0" TextWrapping="Wrap" Text="{Binding Path=Count}" VerticalAlignment="Top" Width="311"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

和代码隐藏:

namespace WpfApplication1
{   
    public partial class MainWindow : Window
    {
        MyClass mc;

        public MainWindow()
        {
            InitializeComponent();
        mc = new MyClass(this.Dispatcher);

        text.DataContext = mc;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Task task = new Task(() =>
        {
            mc.StartCounting();
        });

        task.ContinueWith((previousTask) =>
        {

        },
        TaskScheduler.FromCurrentSynchronizationContext());

        task.Start();
    }
}

public class MyClass
{
    public int Count { get; …
Run Code Online (Sandbox Code Playgroud)

c# wpf

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