将文本框.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类,它是通用的,所以它返回整数,仍然没有希望。
谁能找到一个解决方案或帮助我正确的方式。我有点进退两难,不知道该怎么办。我可以编写一个接受字符串的方法,但这会破坏使用库的目的。您引用了错误的对象作为命令参数-您将文本框本身传递给命令而不是包含文本元素。为了解决这个问题,你必须在命令参数绑定中使用"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>