给定一个基本的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。
答案 0 :(得分:1)
嗨,如果您的ViewModel
应该处理Model
上任何仅作为其唯一目的的请求,那么为了让这些事情发挥作用,您需要ICommand,如果您需要这里有一些更多信息link,其中包含RoutedCommands
的教程。如果您已定义Model
和ViewModel
,则可以通过其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。