2013-07-04 61 views
5

我將現有的WPF應用程序移植到Windows 8應用程序。什麼是人們在Windows 8中使用而不是IMultiValueConverters?

在WPF應用程序中,我們大量使用MultiValue轉換器,以允許我們創建UI元素屬性和viewmodel屬性(hippo對象的權重和itemcontrol的actualWidth)組合的值,以實現漂亮的UI效果。

但是,Windows 8沒有MultiValue轉換器。

由於我正在移植一個應用程序,我並不想大幅改變我的viewmodels或Xaml。

我該如何複製多值控制器功能,並儘量減輕痛苦和重寫?

+4

'我正在將一個現有的WPF應用程序移植到Windows 8應用程序中。「 - 我真的爲你感到難過。截至目前,WinRT XAML功能集甚至比Silverlight還差。這意味着它只是完整WPF功能集的一小部分。這意味着你將不得不採取各種可怕的黑客手段來實現這一目標。 –

+4

WinRT是新的CompactFramework,除了........之外,它擁有一切 –

+4

我用發誓的話代替。很多人:-) – dotMorten

回答

0

我的方法是公開虛擬機的靜態單例實例;例如:

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

      return _mvm; 
     } 
    } 

然後簡單的通過整個VM通過:

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

這不是multibinding,但它允許你通過多個參數。

+0

問題不在於如何將視圖模型傳遞給轉換器。它將viewmodel和view屬性傳遞給轉換器。 (哦,你根本沒有使用轉換器,這是令人困惑的,因爲問題是關於轉換器)。 –

+0

答案是WinRT不支持它。我只是想我會提供一種替代方法。 –

相關問題