我正在嘗試使用Prism和MVVM模式來開發應用程序。在我的用戶界面中,我定義了一個上一個和下一個按鈕。爲了在調用Web服務中使用,我定義了一個枚舉,它會告訴我需要遍歷的方向。因此,在這種情況下,按鈕直接映射到枚舉值。枚舉的定義非常簡單,如下:Silverlight 3/Prism - 將枚舉值作爲命令參數傳遞
namespace CodeExpert.Book.Helpers
{
public enum BookDirection { Previous = -1, NotSet = 0, Next = 1, }
}
我定義我的命令,並委託我的視圖模型和正確分配的屬性格式。相關代碼是:
public DelegateCommand PreviousNextCommand { get; set; }
public IndexEntriesViewModel(GlobalVariables globalVariable, IndexEntryOperations currentOperator)
{
//a bunch of initialization code.
InitializeCommands();
}
void InitializeCommands()
{
PreviousNextCommand =
new DelegateCommand(OnPreviousNextCommandExecute);
}
private void OnPreviousNextCommandExecute(BookDirection parameter)
{
//Code to process based on BookDirection
}
因此,基於此配置,我想將BookDirection枚舉值傳遞給CommandParameter。然而,我不能爲此獲得XAML。這裏的XAML我已經試過了,似乎最正確的對我說:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="CodeExpert.Book.Views.Index"
d:DesignWidth="1024"
d:DesignHeight="768"
xmlns:helpers="clr-namespace:CodeExpert.Book.Helpers"
xmlns:command="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
xmlns:common="clr-namespace:System.Windows;assembly=System.Windows.Controls"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input">
<Button x:Name="ButtonPrevious"
HorizontalAlignment="Left"
Margin="2,1,0,1"
Width="25"
Content="<"
Grid.Column="1"
Grid.Row="1"
Height="20"
command:Click.Command="{Binding Path=CurrentIndexViewModel.PreviousNextCommand}">
<command:Click.CommandParameter>
<helpers:BookDirection.Previous />
</command:Click.CommandParameter>
</Button>
</UserControl>
我沒有得到任何智能感知爲BookDirection爲枚舉並獲得設計&編譯時錯誤說類型「BookDirection」不包含對'以前'的定義。有沒有辦法通過該枚舉,或者我只是失去了一些東西?我現在通過將參數類型設置爲string
而不是BookDirection
,然後我必須解析文本和代碼的氣味。我已經完成了一些Google搜索,並且我已經找到了最接近的答案 - Passing an enum value as command parameter from XAML不幸的是,Silverlight不支持x:static綁定擴展,因此我無法使用該答案中描述的確切技術。
任何幫助將不勝感激。
斯坦,你的英語和口才都很好。我實際上已經把這個項目放在了後面,但本週可能會再次出現。我會嘗試一下你的技術。 – 2009-07-13 12:51:30