我试图找出如何使用你在典型事件处理程序中使用的控件参数,例如使用命令单击。我学会了如何使用命令运行方法,但是如果
这是我所拥有的,不确定它是否以其专业的方式使用它,希望是的:) 这是绑定到控件的类和命令:
class Commands
{
private ICommand rectangleCommand;
public ICommand RectangleCommand
{
get { return rectangleCommand; }
}
public Commands()
{
rectangleCommand = new RelayCommand(makeItInvisible);
}
private void makeItInvisible()
{
MessageDialog dialog = new MessageDialog("Works");
dialog.ShowAsync();
}
}
这是我的RelayCommand
类,它实现ICommand
并使用Action
委托指向Commands
类中的方法:
public class RelayCommand : ICommand
{
public event EventHandler CanExecuteChanged;
private Action action;
public RelayCommand(Action action)
{
this.action = action;
}
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
action();
}
}
这很好,但我还需要更多。 :) 这是我的XAML代码。我刚创建它来运用INottifyProperyChanged和ICommand接口。让我们假设:首先,我想传递给我创建的另一个页面对象,并在OnNavigatedTo方法中使用它。另一种情况是我想要更改已按下按钮的某些属性。在后面的代码中使用标准事件处理程序,我很容易使用已传递的对象发送器routedEventArgs e。如何使用命令执行此操作?
<Grid DataContext="{StaticResource Person}" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock HorizontalAlignment="Left" Margin="808,84,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="85" Width="323" FontSize="25" Text="{Binding Name}"/>
<TextBox HorizontalAlignment="Left" Margin="138,107,0,0" TextWrapping="Wrap" Text="{Binding Name,Mode=TwoWay}" VerticalAlignment="Top" Width="435"/>
<Button Content="Button" x:Name="Button1" Margin="100,375,0,0" VerticalAlignment="Top" Height="75" Width="257" Background="#FF39349E"/>
<Button Content="Button" x:Name="Button2" HorizontalAlignment="Left" Margin="457,375,0,0" VerticalAlignment="Top" Height="75" Width="257" Background="#FF39349E"/>
<Button Content="Button" x:Name="Button3" HorizontalAlignment="Left" Margin="830,375,0,0" VerticalAlignment="Top" Height="75" Width="257" Background="#FF39349E"/>
<Button Content="Show The Message" HorizontalAlignment="Left" Margin="833,242,0,0" VerticalAlignment="Top" Width="273" Height="69" Background="#FFE07031"
DataContext="{StaticResource Commands}" Command="{Binding RectangleCommand}"/>
</Grid>
答案 0 :(得分:0)
您使用CommandParameter
Dependency Property
来传递参数。
<Button Content="Show The Message" HorizontalAlignment="Left" Margin="833,242,0,0" VerticalAlignment="Top" Width="273" Height="69" Background="#FFE07031"
DataContext="{StaticResource Commands}" CommandParameter"Show the message" Command="{Binding RectangleCommand}"/>
但是你想要实现的目标可能是通过触发器更好地实现的。您的命令不应该完全了解Button或UI。