2013-09-23 5 views
-1

Привет, мне нужно сузить строку поиска, чтобы пользователи могли поместить некоторые флаги в конце поиска, например «/ A» или «/ W». Это wpf и MVVM. Я попытался поместить его в собственность, но похоже, что он не работает. Куда я должен положить его, если не могу поместить его в собственность.Где я должен положить взять строку из двух последних символов

public NavDataType Type 
    { 

     get 
     { 
      return _type; 
     } 
     set 
     { 
      if (_type.ToString().Substring(_type.ToString().Length - 2, 2) == "/A") 
       _type = NavDataType.Airport; 
      if (_type.ToString().Substring(_type.ToString().Length - 2, 2) == "/W") 
       _type = NavDataType.Waypoint; 
      if (_type.ToString().Substring(_type.ToString().Length - 2, 2) == "/N") 
       _type = NavDataType.Navaid; 
      SetProperty(ref _type, value, "Type"); 

     } 
    } 
+0

Просто записка. Я бы взял логику в вашем выражении if: _type.ToString(). Substring (_type.ToString(). Length - 2, 2) сохранить результат в переменной, чтобы вам не нужно было делать это вычисление вновь и вновь. –

+2

вы должны использовать string.EndsWith как 'if (_type.ToString(). EndsWith ("/A "))' – Habib

+0

Может ли пользователь иметь несколько флагов? то есть «Что-то/A/W»? – Jonesopolis

ответ

0
 if (_type.ToString().Substring(_type.ToString().Length - 2, 2) == "/N") 
      _type = NavDataType.Navaid; 
     SetProperty(ref _type, value, "Type"); 

проблема заключается в том, что вы устанавливаете _type в случае утверждения (работает correcty), но тогда SetProperty вызов перезапись, что с тем, что value было, когда он был принят в.

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