我正在研究将MVVM模式用于我的Silverlight应用程序。
以下代码来自xaml UI代码:
<Button Width="30"
Margin="10"
Content="Find"
Command="{Binding Path=GetCustomersCommand, Source={StaticResource customerVM}}"
CommandParameter="{Binding Path=Text, ElementName=tbName}"/>
<TextBox x:Name="tbName"
Width="50" />
<TextBox x:Name="tbID"
Width="50" />
以下代码来自ViewModel类:
public ICommand GetCustomersCommand
{
get { return new RelayCommand(GetCustomers) { IsEnabled = true }; }
}
public void GetCustomers(string name, string id)
{
// call server service (WCF service)
}
我需要传递两个参数,但是,无法找到如何将两个参数(id和name)传递给ViewModel类。
我想知道xaml代码中是否有可能不在代码隐藏中。
提前致谢
答案 0 :(得分:1)
没有简单的方法可以做到这一点。相反,我建议您创建一个没有参数的命令,并将框TextBoxes绑定到ViewModel的属性:
<强> C#强>
public void GetCustomers()
{
GetCustomers(_id, _name);
}
private int _id;
public int ID
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged("ID");
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
<强> XAML 强>
<Button Width="30"
Margin="10"
Content="Find"
Command="{Binding Path=GetCustomersCommand, Source={StaticResource customerVM}}"/>
<TextBox x:Name="tbName"
Text="{Binding Path=Name, Source={StaticResource customerVM}, Mode=TwoWay}"
Width="50" />
<TextBox x:Name="tbID"
Text="{Binding Path=ID, Source={StaticResource customerVM}, Mode=TwoWay}"
Width="50" />