W 2003 objął mandat radnego sejmiku dolnośląskiego II kadencji, zastępując Artura Zielińskiego. W 2004 z ramienia UW bez powodzenia kandydował do Parlamentu Europejskiego i w wyborach uzupełniających do Senatu. Działał od 2005 w Partii Demokratycznej, z której w sierpniu 2006 przeszedł do Platformy Obywatelskiej. Z jej listy w tym samym roku skutecznie ubiegał się o reelekcję do sejmiku, a w 2007 ponownie uzyskał mandat posła (VI kadencji). Kandydując w okręgu legnickim, otrzymał 14 133 głosy.
5 grudnia 2010, w wyniku drugiej tury wyborów samorządowych, został wybrany na urząd prezydenta Jeleniej Góry, pokonując ubiegającego się o reelekcję Marka Obrębalskiego. 30 listopada 2014 uzyskał wybór na kolejną kadencję (startując z ramienia własnego komitetu Zmieniamy Jelenią Górę), ponownie w drugiej turze głosowania pokonując swojego poprzednika (startującego z ramienia PO). W październiku 2015 odszedł z PO, jednak w lutym 2016 do niej powrócił. W 2018 nie kandydował w wyborach na prezydenta miasta, uzyskał natomiast mandat radnego sejmiku dolnośląskiego VI kadencji.