2015-07-08 2 views
-2

Я не нашел решение в Интернете, которое решит мою проблему. Поэтому я действительно надеюсь, что кто-то может мне помочь.Преобразование TextBox.Text в Int. (No-Code Behind)

Итак, в основном, что говорит 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 Content="Search By Id" Command="{Binding Champion}" CommandParameter="{Binding ElementName=championId}"> 
      </Button> 
    <TextBox Grid.Row="0" Grid.Column="1" Name="championId"></TextBox> 

Метод GetChampion нужен идентификатор чемпиона, который я вхожу в текстовом поле, которое затем будет передано как «ид», поэтому я попытался литье его в целое. Я получаю это (как выше), и я получаю это

"Исключение типа„System.InvalidCastException“произошло в RiotApiApplication.exe, но не обрабатывается код пользователя Дополнительная информация: указано литая не действует. "

Я попытался Convert.ToInt32 (ID) я получаю это:

Невозможно привести объект типа 'System.Windows.Controls.TextBox' к типу 'System.IConvertible'.

Так что моя следующая попытка была в том, что я пытался включить конвертер, который берет ввод текстового поля и преобразовывает его в целое. Например. «Aatrox» == 266, который выглядит следующим образом. (Я знаю, что оно не самое лучшее решение, но я просто хочу работать первым)

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

Но все-таки получить тот же вопрос. Итак, я попытался создать новый класс MyCommand, который является Generic, чтобы он возвращал Integer и до сих пор не надеется.

Может ли кто-нибудь найти решение или помочь мне правильным способом. Я как бы застрял и не знаю, что делать. Я могу написать метод, который берет строку, но это может помешать использованию библиотеки.

ответ

1

Вы ссылаетесь на неправильный объект как на свой командный параметр - вы передаете текстовое поле непосредственно своей команде вместо содержащего тексэлемента. Для того, чтобы исправить это, вы должны использовать «Path» синтаксис в вашем CommandParameter связывания:

<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> 
+0

Спасибо Филиппу !! – MummiSnow

Смежные вопросы