2013-07-04 12 views
5

Przenoszę istniejącą aplikację WPF do aplikacji Windows 8.Co ludzie używają zamiast IMultiValueConverters w Windows 8?

W aplikacji WPF w znacznym stopniu korzystamy z konwerterów MultiValue, aby umożliwić nam tworzenie wartości, które są kombinacjami właściwości elementu interfejsu użytkownika i właściwości viewmodelu (wagi obiektu hipopotama i rzeczywistej szerokości elementu) w celu uzyskania ładnych efektów interfejsu użytkownika .

System Windows 8 nie ma jednak konwertera MultiValue.

Odkąd przenosiłem aplikację, tak naprawdę nie chcę znacząco zmienić moich modeli podglądu ani Xaml.

Jak można replikować funkcjonalność kontrolera wielowartościowego przy minimalnym natężeniu bólu i przepisywaniu?

+4

'Przekazuję istniejącą aplikację WPF do aplikacji Windows 8. - Naprawdę współczuję Tobie. W tej chwili zestaw funkcji WinRT XAML jest nawet gorszy od Silverlight. Oznacza to, że jest to tylko niewielka część pełnego zestawu funkcji WPF. Oznacza to, że będziesz musiał uciekać się do wszelkiego rodzaju okropnych hacków, aby to zadziałało. –

+4

WinRT to nowa karta CompactFramework, ma wszystko oprócz ........ wszystkiego –

+4

Używam zamiast tego przekleństw. Wiele z nich :-) – dotMorten

Odpowiedz

0

Moje podejście polegało na odsłonięciu statycznej instancji pojedynczej maszyny wirtualnej; na przykład:

public class MainViewModel : INotifyPropertyChanged 
{ 
    private static MainViewModel _mvm; 
    public static MainViewModel MVM 
    { 
     get 
     { 
      if (_mvm == null) 
       _mvm = new MainViewModel(); 

      return _mvm; 
     } 
    } 

Następnie prostym przejściu przez cały VM:

<Button Command="{Binding MyCommand}" CommandParameter="{Binding MVM}">Run Command</Button>   

To nie MultiBinding, ale nie pozwala na przekazywanie wielu parametrów.

+0

Problem nie polega na tym, jak przekazać model widoku do konwertera. Przechodzi przez viewmodel i wyświetla właściwości konwertera. (Och, i wydaje się, że nie używasz konwertera w ogóle, co jest mylące, ponieważ pytanie dotyczy konwerterów). –

+0

Odpowiedź jest taka, że ​​WinRT jej nie obsługuje. Po prostu pomyślałem, że zaproponuję alternatywne podejście. –

Powiązane problemy