2012-05-08 41 views
1

可能重複:
WPF: Display a bool value as 「Yes」/「No」在DataGrid中,如何將布爾值表示爲「是/否」而不是複選框?

我在2010年VB.Net(.NET 4.0)寫一個WPF程序使用的數據對一個簡單的類,它是一個ObservableCollection綁定另一個我寫的簡單課程。到目前爲止,我有一個DataGrid顯示信息,我可以根據需要添加和刪除項目,但我似乎正在絆倒一個相當基本的概念:

如何以某種方式顯示數據,而不是默認行爲各種DataGrid列允許?

我在我的原始類中有一個名爲「反轉」的布爾值,我們稱它爲「x」。我希望顯示ObservableCollection「x」的DataGrid在反轉列下顯示「是」或「否」,而不是選中或未選中的複選框(DataGridCheckBoxColumn)。

有沒有一個很好的方法來做到這一點,或者我浪費了我的時間?謝謝!

回答

3
[ValueConversion(typeof(bool), typeof(string))] 
public class FlopBoolean : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (bool)value return "yes"; 
     return "no"; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     return true; 
    } 
} 
+0

謝謝,這對我有用。我不使用CS,所以我不得不做一點思考在VB中寫這個。我沒有發現任何與你的第一行相同的地方,它指定了轉換器實現了哪些類型,但是儘管如此,它完成了這項工作。 – evilspoons

+0

第一行可能是錯誤的,它仍然有效,所以我認爲它不重要。 – Paparazzi

+0

我實際上在我的第一條評論之後的某個地方讀了一些內容,第一行將轉換類型指定爲開發環境的「未來版本」的附加數據,而現在還沒有使用它。 – evilspoons

0

如果你有你的對象,這是綁定到數據視圖或DataGridView的集合,你可以創建一個屬性並顯示在DataGrid該屬性。例如:

Public Class Example 
    <Browsable(False)> Public Property isLinked As Boolean 

    <DisplayName("Linked")> Public ReadOnly Property LinkedDisplay As String 
     Get 
      If isLinked Then 
       Return "Yes" 
      Else 
       Return "No" 
      End If 
     End Get 
    End Property 
End Class 

它的缺點是,您將無法在datagridview上編輯此列。

+0

這也適用於我(我也試過@Blam的回答)。這個版本實現起來很簡單,但是,就像一個想法一樣,它看起來也不那麼「精緻」,因爲您必須修改底層數據結構以幫助改變它的顯示方式。謝謝您的幫助! – evilspoons

+0

部分同意。從這個角度來看,它有點混亂,但它使代碼的其他部分更清晰,因爲您不必編寫任何其他代碼來顯示/格式化結果。 – pkoszka

相關問題