2011-06-10 65 views
2

我有我需要在WPF中多狀態複選框的要求...如何實現多態複選框在WPF的MVVM

而且因爲我使用MVVM這樣處理結合和命令應遵循相同我將在我的視圖中使用它。

我已經看到了一個DotNetNuke的多態複選框(在ASP.NET做),但如何使其在WPF

在這方面一些投入,將有助於

一些示例將是巨大的...

+0

網站中沒有多重狀態複選框的標籤... o_O – Ankesh 2011-06-10 13:31:17

+0

所以......您在哪一部分掙扎? – 2011-06-10 13:47:59

+0

我必須顯示更改圖標4種不同狀態同意,不同意,也許,我不在乎..... – Ankesh 2011-06-10 14:17:38

回答

2

複選框具有特定功能(選中,未選中和可選不確定)。

根據你的評論,我認爲這將是最簡單的,只是做一個按鈕。我沒有時間,現在來測試一個實際的例子,但這裏的一些僞代碼,讓你去:

XAML

<Button Command="{Binding ToggleDecisionState}"> 
    <Button.Content> 
     <Image Source="{Binding CurrentDecisionIcon}" /> 
    <Button.Content> 
</Button> 

視圖模型(離開了MVVM實施細則)

enum Decisions 
{ 
    Agree, 
    Disagree, 
    Maybe, 
    DoNotKnow 
}; 

public Decisions CurrentDecision 
{ 
    get {} 
    set {} 
} 

public RelayCommand ToggleDecisionStateCommand 
{ 
     // In here, call code to execute toggle 
     if (mCurrentDecision == Decisions.DoNotKnow) 
      CurrentDecision = Decisions.Agree; 
     else 
      CurrentDecision += 1;  
} 

public ImageSource CurrentDecisionIcon 
{ 
    get 
    { 
     ImageSource img = [some default image]; 
     switch (mCurrentDecision) 
     { 
      case Decisions.Agree: 
       img = [path to Agree icon]; 
       break; 

      // Other cases here 
     } 

     return img; 
    } 
} 
+0

謝謝....我會盡力... :) – Ankesh 2011-06-10 18:26:46

1

如果你想使用三態複選框,你必須將後面的布爾值(在ViewModel中) 更改爲bool?類型。

public bool? IsEnabled { get; set; } 

,並設置該屬性複選框

IsThreeState = True; 
+0

我必須顯示更改爲4種不同狀態的圖標同意,不同意,也許,我不在乎..... – Ankesh 2011-06-10 14:19:47