0

パスワード ボックスまたは任意の形式の通常のテキスト コントロールを使用している場合、これらのプロパティにアクセスできないようです。値コンバーターを設定しましたが、更新時に値を正しく返していますが、ボタンに対してコマンドが起動すると、パラメーターが null にリセットされたようです。

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 呼び出しで Paramaters を調べると、null のようです。

どんな助けでも大歓迎です!!

4

1 に答える 1

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()
}
于 2012-10-24T10:58:09.373 に答える