2013-04-17 32 views
0

我有一個用幾個控件的用戶界面。處理WPF按鈕單擊並啓用禁用

  1. 最初,當窗體加載,搜索按鈕將被禁用,一旦所有 搜索條件中給出,搜索按鈕將自動啓用 。
  2. 在點擊搜索按鈕,我想用MVVM模式要調用的方法 ,結果在網格綁定

XAML:

<Button Name="btnGetDetails" Content="Get Details" Grid.Row="2" Command="{Binding SearchCommand}"/> 

需要在模型,視圖模型什麼碼XAML?

+0

你遇到了什麼問題? – Artless

+0

@Trickery,非常誠實,問題是我不知道該怎麼做,只知道XAML的樣子,但不知道它將如何在模型和視圖模型中實現。搜索了一些文章,但沒有得到很好的鏈接....在此先感謝。 – Amit

+0

您在模型,視圖模型和XAML中嘗試了哪些代碼?發佈你做了什麼。 –

回答

0

僅當按鈕被點擊時纔會執行命令。如果您需要對按鈕執行某些操作,那麼您應該對包含按鈕的窗口執行操作(假設您的按鈕位於窗口中)。現在,如果你想堅持使用MVVM模式,那麼你不應該使用Window.OnLoaded,因爲那會把代碼放在你的代碼後面。一種選擇是使用System.Windows.Interactivity,您可以單獨下載。這裏是什麼樣子:

<Window x:Class="..." 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:i="clr 
     -namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Loaded"> 
      <i:InvokeCommandAction Command="{Binding ...}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Window> 

至於你的模型,視圖和視圖模型應該是什麼,我想你應該看看網上一些教程。關於如何實現MVVM模式有一些非常好的解釋。我發現這個YouTube視頻相當翔實自己:這裏

http://www.youtube.com/watch?v=EpGvqVtSYjs

0

所以一些基本MVVM。你走在正確的軌道上,只是錯過了一步。您的視圖模型中的命令實現應該(可能)接受兩個輸入:一個表示正在執行的代碼的Action,以及一個Predicate,它是否可以在Action塊中執行代碼返回true/false。因此,在您的視圖模型,沿行定義的命令(注:這是我的一個項目樣本):

this.executeCommand = new RelayCommand(this.OnExecuteClicked, this.OnCanExecuteChanged); 

的OnCanExecuteChanged方法將返回根據您設置任何條件了一個布爾值。因此,如果您希望在屬性A和屬性B設置正確時啓用提交按鈕,則返回true,否則返回false。您的命令實現的內部工作將負責其餘部分。搜索RelayCommand實現(如果您還沒有)或DelegateCommand以獲取更多示例。