将库函数包含在WPF设计范例中

时间:2014-04-09 06:43:34

标签: c# wpf xaml

给定一个基本的C#库,如何将这个库的函数实现到我的WPF应用程序中以正确处理绑定和命令的概念?

我的意思是,我需要为这些库类编写一些自己的包装器来实现ICommand之类的接口,还是应该直接在库本身中完成?

一些代码让我的问题更容易理解:

来自图书馆:

public class Item
{
    public string Name { get; set; }

    public void DoSomething() { throw new NotImplementedException; }
}

我想在我的XAML标记中实现函数DoSomething()而没有.cs文件中的任何代码行,因为从我读过的内容来看,这是最佳实践。

(假设Item的实例绑定到控件)

<Button Command="{Binding DoSomething}"/>

好吧,为了做到这一点,我需要实现接口ICommand并创建一个命令,但是,如上所述,我不清楚,因为我在这里使用库。

我应该为API的Item类编写自己的Wrapper并实现ICommand接口,还是有其他方法可以实现这一点?我自己写了这个库,所以可以改变。我只是不完全确定更改库,因为如果我这样做,它(可能)绑定到WPF。

1 个答案:

答案 0 :(得分:1)

嗨,如果您的ViewModel应该处理Model上任何仅作为其唯一目的的请求,那么为了让这些事情发挥作用,您需要ICommand,如果您需要这里有一些更多信息link,其中包含RoutedCommands的教程。如果您已定义ModelViewModel,则可以通过其Model轻松地将任务分配给特定VM

P.S。我认为您可以将您的库视为Model并编写一个&#34;包装器&#34; ViewModel来处理它的操作。 HTH

<强>更新

请考虑以下事项:

class libClass
{
     void method()
     {
         //do something here
     }
}

以上代码将是您的模型,如果您希望它更具可读性,您可以这样做

class libModel
{
     private libClass _libClass;

     public libClass LibClass { get; set; }
}

注意

您可以在模型中实现INotfiyPropertyChanged,以便在需要时处理任何更改。

现在在VM中如何使用Model

class ViewModel
{
 private libModel _libModel;
 public libModel LibModel { get; set; }
 //after you set up your RoutedCommands
 //I declare method within my VM to handle the RoutedCommands don't know 
 //if it works when you use Property Method
 void VMMethod()
 {
      //use VM's property to invoke desired method from your lib
 }
}
瞧,瞧!准备好&#34;包装&#34;适用于在VM中实现的类。

提示

如果你想知道怎么做RoutedCommands这里是教程的link