将 TextBox.Text 转换为 Int。 (No-Code落后)
Converting TextBox.Text to Int. (No-Code Behind)
我尚未在 Internet 上找到可以解决我的问题的解决方案。所以我真的希望有人能帮助我。
基本上就是标题所说的那样。我有这个
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 方法需要冠军的 ID,我将其输入文本框中,然后将其作为 "id" 传递,因此我尝试将其转换为 int。我明白了(如上)我明白了
" RiotApiApplication.exe 中发生类型 'System.InvalidCastException' 的异常,但未在用户代码中处理
附加信息:指定的转换无效。
我试过 Convert.ToInt32(id) 我明白了:
无法将类型 'System.Windows.Controls.TextBox' 的 object 转换为类型 'System.IConvertible'。
所以我的下一次尝试是尝试包含一个转换器,该转换器接受文本框的输入并将其转换为整数。例如。 "Aatrox" == 266,看起来像这样。 (我知道这不是最好的解决方案,但我只想让它先工作)
switch (value as string)
{
case "Aatrox":
value = 266;
break;
}
return value;
但仍然遇到同样的问题。
所以我尝试创建一个新的 MyCommand class,它是通用的,所以它返回了整数,但仍然没有希望。
任何人都可以找到解决方案或以正确的方式帮助我。我有点卡住了,不知道该怎么办。我可以编写一个接受字符串的方法,但这会破坏使用库的目的。
您将错误的对象引用为您的命令参数 - 您将文本框本身而不是包含的文本元素传递给了您的命令。
为了解决这个问题,您必须在命令参数绑定中使用 "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>
我尚未在 Internet 上找到可以解决我的问题的解决方案。所以我真的希望有人能帮助我。
基本上就是标题所说的那样。我有这个
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 方法需要冠军的 ID,我将其输入文本框中,然后将其作为 "id" 传递,因此我尝试将其转换为 int。我明白了(如上)我明白了
" RiotApiApplication.exe 中发生类型 'System.InvalidCastException' 的异常,但未在用户代码中处理 附加信息:指定的转换无效。
我试过 Convert.ToInt32(id) 我明白了:
无法将类型 'System.Windows.Controls.TextBox' 的 object 转换为类型 'System.IConvertible'。
所以我的下一次尝试是尝试包含一个转换器,该转换器接受文本框的输入并将其转换为整数。例如。 "Aatrox" == 266,看起来像这样。 (我知道这不是最好的解决方案,但我只想让它先工作)
switch (value as string)
{
case "Aatrox":
value = 266;
break;
}
return value;
但仍然遇到同样的问题。 所以我尝试创建一个新的 MyCommand class,它是通用的,所以它返回了整数,但仍然没有希望。
任何人都可以找到解决方案或以正确的方式帮助我。我有点卡住了,不知道该怎么办。我可以编写一个接受字符串的方法,但这会破坏使用库的目的。
您将错误的对象引用为您的命令参数 - 您将文本框本身而不是包含的文本元素传递给了您的命令。 为了解决这个问题,您必须在命令参数绑定中使用 "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>