Я пытаюсь понять, как использовать параметры управления, которые у вас есть обычный типичный обработчик событий, например, щелчок с помощью команд. Я научился запускать метод с помощью команд, но что, еслиКак передать параметр управления xaml как объект, routedEventArgs в команду?
- Я хочу обратиться к своим кнопкам в пользовательском интерфейсе, когда мои методы находятся в совершенно другом классе?
- Как перейти к параметрам нажатого элемента управления?
Вот что у меня есть, не уверен, если его профессиональный путь, чтобы использовать его, надеюсь, что да :) Это класс и команда связана с контролем:
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>
Не могли бы вы разместить XAML-код и предоставить конкретные цели, которые необходимо достичь? –