gpt4 book ai didi

c# - 使用参数的 Prism 命令绑定(bind)?

转载 作者:太空狗 更新时间:2023-10-29 20:13:18 25 4
gpt4 key购买 nike

我有一个工作超链接如下:

XAML:

 <TextBlock >
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName}" />
</Hyperlink>
</TextBlock>

构造函数:

 navHomeViewCommand = new DelegateCommand(NavHomeView);

命令:

     private readonly ICommand navHomeViewCommand;
public ICommand NavHomeViewCommand
{
get
{ return navHomeViewCommand; }
}
private void NavHomeView()
{
int val;
val = PersonSelected.PersonKnownID);
var parameters = new NavigationParameters();
parameters.Add("To", val);
_regionManager.RequestNavigate("MainRegion", new Uri("HomeView", UriKind.Relative), parameters);
}

如果我想有多个超链接,例如...

     <Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName}" />
</Hyperlink>
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName2}" />
</Hyperlink>
<Hyperlink Command="{Binding NavHomeViewCommand}" >
<Run Text="{Binding PersonSelected.PersonKnownName3}" />
</Hyperlink>

我是否必须为每个命令创建一个新命令,或者是否有办法将每个超链接的不同参数 (int) 传递到现有 NavHomeView 命令,以便我可以重用该命令?

最佳答案

这是一个对我有用的完整解决方案:

  1. 使用 CommandParameter(根据 Dmitry - Spasiba!)

    <TextBlock>
    <Hyperlink CommandParameter="{Binding PersonSelected.PersonKnown2ID}"
    Command="{Binding NavHomeViewCommand}" >
    <Run Text="{Binding PersonSelected.PersonKnownName2}" />
    </Hyperlink>
    </TextBlock>
  2. 更改 DelegateCommand 以使用对象参数

    navHomeViewCommand = new DelegateCommand<object>(NavHomeView);
  3. 命令属性保持不变,但方法更改为使用参数:

    private readonly ICommand navHomeViewCommand;
    public ICommand NavHomeViewCommand
    {
    get { return navHomeViewCommand; }
    }

    private void NavHomeView(object ID)
    {
    int val = Convert.ToInt32(ID);
    var parameters = new NavigationParameters();
    parameters.Add("To", val);
    _regionManager.RequestNavigate("MainRegion", new Uri("HomeView", UriKind.Relative), parameters);
    }

关于c# - 使用参数的 Prism 命令绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com