我有一個用幾個控件的用戶界面。處理WPF按鈕單擊並啓用禁用
- 最初,當窗體加載,搜索按鈕將被禁用,一旦所有 搜索條件中給出,搜索按鈕將自動啓用 。
- 在點擊搜索按鈕,我想用MVVM模式要調用的方法 ,結果在網格綁定
XAML:
<Button Name="btnGetDetails" Content="Get Details" Grid.Row="2" Command="{Binding SearchCommand}"/>
需要在模型,視圖模型什麼碼XAML?
我有一個用幾個控件的用戶界面。處理WPF按鈕單擊並啓用禁用
XAML:
<Button Name="btnGetDetails" Content="Get Details" Grid.Row="2" Command="{Binding SearchCommand}"/>
需要在模型,視圖模型什麼碼XAML?
僅當按鈕被點擊時纔會執行命令。如果您需要對按鈕執行某些操作,那麼您應該對包含按鈕的窗口執行操作(假設您的按鈕位於窗口中)。現在,如果你想堅持使用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視頻相當翔實自己:這裏
所以一些基本MVVM。你走在正確的軌道上,只是錯過了一步。您的視圖模型中的命令實現應該(可能)接受兩個輸入:一個表示正在執行的代碼的Action,以及一個Predicate,它是否可以在Action塊中執行代碼返回true/false。因此,在您的視圖模型,沿行定義的命令(注:這是我的一個項目樣本):
this.executeCommand = new RelayCommand(this.OnExecuteClicked, this.OnCanExecuteChanged);
的OnCanExecuteChanged方法將返回根據您設置任何條件了一個布爾值。因此,如果您希望在屬性A和屬性B設置正確時啓用提交按鈕,則返回true,否則返回false。您的命令實現的內部工作將負責其餘部分。搜索RelayCommand實現(如果您還沒有)或DelegateCommand以獲取更多示例。
你遇到了什麼問題? – Artless
@Trickery,非常誠實,問題是我不知道該怎麼做,只知道XAML的樣子,但不知道它將如何在模型和視圖模型中實現。搜索了一些文章,但沒有得到很好的鏈接....在此先感謝。 – Amit
您在模型,視圖模型和XAML中嘗試了哪些代碼?發佈你做了什麼。 –