I have a button on a view that is bound via a RoutedUICommand to a command defined in the ViewModel.
The XAML code excerpt from the view:
<Button Content="Login" Command="{Binding Login}" />
In the View's CodeBehind I add the command binding from the ViewModel to the view's binding collection:
this.CommandBindings.Add( viewModel.LoginCommandBinding );
The ViewModel itself implements the command:
public class LoginViewModel:ViewModelBase
{
public ICommand Login { get; private set; }
public CommandBinding LoginCommandBinding { get; private set; }
public LoginViewModel( ) {
this.Login =
new RoutedUICommand( "Login", "Login", typeof( Window ) );
this.LoginCommandBinding =
new CommandBinding( Login, LoginCommandHandler, CanExecuteHandler );
}
void LoginCommandHandler( object sender, ExecutedRoutedEventArgs e ) {
//Put code here
}
void CanExecuteHandler( object sender, CanExecuteRoutedEventArgs e ) {
return true;
}
}
So the command was defined with the text and name both "Login". The button itself has the content "Login". Is there a way to use the command's text as the button's content?
You can get the command text dynamically for every button.
Put this in your Application.xaml file.
<Style TargetType="Button">
<!--Default Button content to be the Text provided from the Command.-->
<Setter Property="Content"
Value="{Binding RelativeSource={RelativeSource Self},
Path=Command.Text}"/>
</Style>
From...
http://leecampbell.blogspot.com/2008/12/wpf-commandtext.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With