繁体   English   中英

UWP 将额外参数从 XAML 传递给方法

[英]UWP Pass Extra Parameter To Method From XAML

我有一个 StackPanel,当它加载时,我想以编程方式将一些文本框放入其中。 调用 function 时必须传递文本框的数量。

XAML

<StackPanel x:Name="RFC" Orientation="Horizontal" Loaded="{x:Bind m:Formas.CrearCuadrosForma}"/>

我正在尝试这样做:

CS

public static void CrearCuadrosForma(object sender, RoutedEventArgs e, int cantidad)
{
    //TODO
}

但是当我像这样在 XAML 代码中输入参数时

Loaded="{x:Bind m:Formas.CrearCuadrosForma(13)}"

我收到错误消息:“找不到带有 1 个参数的 function 重载”,我找不到将“object sender”和“RoutedEventArgs e”作为参数发送的方法或将“int cantidad”发送到function...

有什么想法吗?

干杯!

我收到错误消息:“找不到带有 1 个参数的 function 重载”,我找不到将“object sender”和“RoutedEventArgs e”作为参数发送的方法或将“int cantidad”发送到function

使用x:Bind将 Loaded 事件重定向到特定方法是不合适的。 对于您的方案,更好的方法是使用XamlBehaviors检测 Loaded 事件,然后使用参数调用特定命令。

例如:

<Grid>
    <Grid.Resources>
        <x:Int32 x:Key="Parameter">15</x:Int32>
    </Grid.Resources>
    <interactivity:Interaction.Behaviors>
        <Interactions:EventTriggerBehavior EventName="Loaded">
            <Interactions:InvokeCommandAction Command="{x:Bind LoadedCommand}" CommandParameter="{StaticResource Parameter}" />
        </Interactions:EventTriggerBehavior>
    </interactivity:Interaction.Behaviors>
</Grid>

后面的代码

public class CommadEventHandler<T> : ICommand
{
    public event EventHandler CanExecuteChanged;

    public Action<T> action;
    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        this.action((T)parameter);
    }
    public CommadEventHandler(Action<T> action)
    {
        this.action = action;

    }
}
public ICommand LoadedCommand
{
    get
    {
        return new CommadEventHandler<int>((s) => LoadedCommandFun(s));
    }
}
private void LoadedCommandFun(int s)
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM