2014-04-09 36 views
0

給定一個基本的C#庫,如何將此庫的函數實現到我的WPF應用程序中以正確處理綁定和命令的概念?將庫函數包含到WPF設計範例中

我的意思是,我需要爲這些庫類編寫一些自己的包裝來實現接口,如ICommand或者應該直接在庫本身中完成?

一些代碼來獲得我的問題更容易理解:

從庫:

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

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

我要實現的功能DoSomething的()在我的XAML標記沒有的代碼在任何的.cs線因爲從我讀過的文件來看,這是最好的做法。

(假設項目的實例綁定到該控件)

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

那麼,爲了做到這一點,我需要實現該接口ICommand並創建一個命令,但這是,如上所述上面,我不清楚,因爲我在這裏使用圖書館。

我應該爲API的Item類編寫自己的包裝器,並實現接口還是有其他方法來實現?我自己寫了這個庫,所以可以進行更改。我只是不完全確定要更改庫,因爲如果我這樣做,它可能(可能)綁定到WPF。

回答

1

您好,如果您的東西應該ViewModel處理這是它的唯一目的是你的Model任何要求,要得到這些東西的工作,你需要ICommand的,如果你想要更多的信息在這裏是linkRoutedCommands的教程。如果您定義了ModelViewModel,則可以通過其​​輕鬆地將任務分配給特定的Model

P.S.我想你可以把你的圖書館當作Model,並寫一個「包裝器」ViewModel來處理它。 HTH

UPDATE

考慮以下幾點:以上

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

代碼將是你的模型,如果你希望它是更具可讀性,你可以這樣來做

class libModel 
{ 
    private libClass _libClass; 

    public libClass LibClass { get; set; } 
} 

備註

您可以在您的模型中實現INotfiyPropertyChanged,以便在需要時處理任何更改。

現在你​​如何使用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 
} 
} 

,瞧!爲您的課程準備好「包裝器」並在虛擬機中實施。

提示

如果你想知道如何做RoutedCommands這裏是一個link的教程。

+0

嗨,謝謝你的回答。那麼,在對MVVM模式進行一些研究後,這聽起來對我來說很簡單。不過,你能否提供一個簡單的例子來說明你如何包裝課程?基本上這不應該是一個問題,我已經有了一些想法,但我想確定如何正確地設計。感謝您的支持。 – 0x8BADF00D