c # - Bindende variabler som kommandoparameter gennem bindende udtryk

Indlæg af Hanne Mølgaard Plasc

Problem



Er der nogen måde at binde lokale varibler og objekter til kommando som kommandoparameter.
Hvis nogen af ​​ovenstående er mulig, så fortæl mig det.

Bedste reference


Hvis du mener at binde til en 'lokal variabler', så er det klart ikke muligt. Du opsætter DataContext til et objekt, og så kan du kun binde til dets egenskaber eller afhængighedspropertyper, ikke lokale variabler af nogle metoder, hvilket ikke lyder logisk.

Andre referencer 1


Du skal være mere specifik. Kan du skrive nogle kode?


Du kan gøre noget som:


ICommand command = new ActionCommand(parameter => { this.CallFunction(parameter); });


Parameter er en type objekt, så du kan passere en enkelt genstand og derefter afkasse den. Også ActionCommand kræver Blend eller i det mindste Microsoft.Expression.Interactions-samlingen.


OPDATERET


Ok i dette tilfælde er du sandsynligvis bedst til at definere ICommand på visningsmodellen og binde til den i XAML.


På visningsmodellen tilføjes en implementering som denne:


public class AViewModel
{
    private ICommand \_ACommand;

    public ICommand ACommand   
    {   
        get  
        {   
            if (this.\_ACommand == null)   
            {   
                this.\_ACommand = new ActionCommand(parameter =>   
                {   
                    // do stuff.
                });   
            }

            return(this.\_ACommand);   
        }   
    }

}


I XAML skal du binde til datakilden, som du allerede har probaly.


<UserControl.Resources>
  <local:AViewModel x:Key="AViewModelDataSource" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource AViewModelDataSource}}">
<TextBox x:Name="ABCTextBox" />
<Button x:Name="AButton" Command="{Binding ACommand, Mode=OneWay}" CommandParameter="{Binding ElementName=ABCTextBox, Path=Text}" />
</Grid>


Håber dette hjælper.