2012-12-28 16 views
0

我已經在數據網格如何使複選框檢查,並取消WPF

<DataTemplate> 
    <CheckBox x:Name="chkActive" IsChecked="{Binding Active, Mode=TwoWay}" 
    Style="{StaticResource checkboxStyleNormal}" IsEnabled="True"/> 
</DataTemplate> 

採取的複選框,並結合數據網格

datagrid1.ItemSource = dtData.DefaultView; 

DataTable中,我爲01趨於活躍,我想展示我的複選框時檢查Active = 0

網格綁定,但我無法綁定複選框。

有人請告訴我如何顯示覆選框檢查/取消選中基於我的條件。

+0

您是否爲視圖設置了上下文?你在對象上實現了'INotifiyPropertyChanged'接口嗎? 'Active'是一個布爾類型嗎? – ChrisF

+0

我假設你的意思是「_getting Active as zero and one_」,所以我也編輯了這一行。 – gideon

+0

@ChrisF:我沒有使用INotifiyPropertyChanged接口 – Rocky

回答

0

我試圖通過修改我的查詢綁定到DataGrid之前加入「案件」我的查詢

Select ID ,DESC, CASE WHEN [STATUS] = 0 THEN 'True' WHEN [STATUS] = 1 THEN 'False' END AS [Active], ORDER [Order] from tbldesc 

它的工作對我罰款。

5

IsChecked需要一個布爾值(true/false),但該表包含一個數字類型。您需要將ValueConverter添加到綁定語句中,該語句將數字值轉換爲布爾值。

檢查How to bind a boolean to a combobox in WPF的反例(將bool轉換爲int)。在你的情況下,ValueConverter應該是:

public class NumToBoolConverter: IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return ((int)value == 1); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return (bool)value ? 1 : 0; 
    } 
} 

}

UPDATE

post有NumToBoolConverter也確實型和空檢查:

public class NumToBoolConverter : IValueConverter 
{ 

    #region IValueConverter Members 

    public object Convert(object value, Type targetType, 
     object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value!=null && value is int) 
     { 
      var val = (int)value; 
      return (val==0) ? false : true; 
     } 
     return null; 

    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value!=null && value is bool) 
     { 
      var val = (bool)value; 
      return val ? 1 : 0; 
     } 
     return null; 
    } 

    #endregion 
} 
+0

我爲我的設計使用UserControl。我如何使用windows.resource – Rocky

+0

替換Windows.Resource的UserControl.Resource。 Resource是其父對象的參數,因此您需要指定父類型,就像您使用DataGrid.XYZ一樣 –

0

試試這個如果有幫助:

  • 創建一個從DataGridBoolColumn衍生
  • 覆蓋的GetColumnValueAtRow(和SetColumnValueAtRow如果你想你的 列可編輯)
  • 使這些方法調用繼承的實現與 數據源的工作列,但做一些預/後處理將0和1分別轉換爲「假」 和「真」。
相關問題