将文本框.Text to Int.(没有代码后面)

本文关键字:代码 文本 Text to Int | 更新日期: 2023-09-27 18:01:34

我还没有在互联网上找到解决我的问题的解决方案。所以我真的希望有人能帮助我。

基本上就是Title所说的。我有这个

public MyCommand Champion
    {
        get
        {
            return new MyCommand((id) =>
            {
                ChampionById(id);
            });
        }
        set { _champion = value; }
    }
    private async void ChampionById(object id)
    {
        _staticRiotApi.GetChampion(Region.euw, (int)id);
    }

我将它绑定到视图中的一个Button,它看起来像这样,非常简单

 <Button Content="Search By Id" Command="{Binding Champion}" CommandParameter="{Binding ElementName=championId}">
            </Button>
    <TextBox Grid.Row="0" Grid.Column="1" Name="championId"></TextBox>

方法GetChampion需要Champion的ID,我在文本框中输入该ID,然后将其作为"ID"传递,因此我尝试将其转换为int。我得到这个(和上面一样)和这个

"类型为'System '的异常。在RiotApiApplication.exe中发生了InvalidCastException,但没有在用户代码中处理附加信息:指定的类型转换无效。"

我尝试转换。toint32 (id)我得到这个:

无法强制转换类型为"System.Windows.Controls"的对象。TextBox' to type 'System.IConvertible .

所以我的下一个尝试是我尝试包括一个转换器,它接受文本框的输入并将其转换为整数。如。Aatrox == 266,看起来像这样。(我知道这不是最好的解决方案,但我只是希望它首先工作)

switch (value as string)
        {
            case "Aatrox":
                value = 266;
                break;
        }
        return value;

但仍然得到相同的问题。所以我试着创建一个新的MyCommand类,它是通用的,所以它返回整数,仍然没有希望。

谁能找到一个解决方案或帮助我正确的方式。我有点进退两难,不知道该怎么办。我可以编写一个接受字符串的方法,但这会破坏使用库的目的。

将文本框.Text to Int.(没有代码后面)

您引用了错误的对象作为命令参数-您将文本框本身传递给命令而不是包含文本元素。为了解决这个问题,你必须在命令参数绑定中使用"Path"语法:

<Button Content="Search By Id" Command="{Binding Champion}" CommandParameter={Binding ElementName=championId, Path=Text}">
</Button>
<TextBox Grid.Row="0" Grid.Column="1" Name="championId"></TextBox>