2012-10-23 56 views
0

我似乎無法在使用密碼框或任何形式的常規文本控件時訪問這些屬性。我設置了一個值轉換器,它在更新時正確地返回值,但是一旦該命令觸發我的按鈕,參數似乎被重置爲空。從使用棱鏡的密碼框中重新綁定代理命令

XAML

<Button x:Name="RegisterButton" Content="register" Height="28" Margin="0,0,8,8" VerticalAlignment="Bottom" Background="#FF005D99" BorderBrush="White" Foreground="White" FontSize="13.333" TextOptions.TextFormattingMode="Display" FontFamily="/Agile Project Management Tool 2012;component/Fonts/#Segoe UI" Padding="1,0,1,1" HorizontalAlignment="Right" Width="90" Command="{Binding RegisterCommand}"> 
     <Button.CommandParameter> 
      <MultiBinding Converter="{StaticResource ParamConverter}"> 
       <Binding ElementName="EmailTextInput" Path="Text"/> 
       <Binding ElementName="PhoneTextInput" Path="Text"/> 
      </MultiBinding> 
     </Button.CommandParameter> 
    </Button> 

正值轉換器

class TwoParamConverter : IMultiValueConverter 
    { 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     return values; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
    } 

視圖模型

public ResigtrationViewModel() 
    { 
     _browsePicturesCommand = new DelegateCommand(OnBrowsePicturesCommand); 
     _registerCommand = new DelegateCommand<object>(OnRegisterCommand); 
    } 

    private void OnRegisterCommand(object paramaters) 
    { 
     var values = (object[])paramaters; 
     var a = (string)values[0]; 
     var b = (string)values[1]; 

     MessageBox.Show(a); 
     MessageBox.Show(b); 
    } 

然而,當我插件在OnRegisterCommand調用中,Pect Paramaters看起來是null。

任何幫助將不勝感激!

+0

都是這些方法的類的一部分..?如果是這樣的話,你的支架似乎並不排隊首發......確保這些方法是該類的一部分 – MethodMan

+0

不,這只是關鍵的方法。 TwoParamConverter是一個單獨的類,ResigtrationViewModel只是綁定命令的構造函數,而OnRegisterCommand是正在執行的命令。 – user1089599

+0

參數是否爲空或鑄造後的值?你爲什麼要演員?並且轉換器僅僅用於將視圖模型中的某些內容轉換爲視圖中可讀的內容。 –

回答

0

試試這個

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
{ 
    //any checks and such things you can add yourself :) 
    return new Tuple<string,string>((string)values[0],(string)values[1]); 

    //or 
    //return values.ToArray() 
} 
+0

這裏是一個鏈接爲什麼返回值不適用於multibinding:http://stackoverflow.com/questions/9018436/icommand-parameters-always-null – blindmeis