背景
在目前很多項目中為了實現資料庫的可移植性性,把我們常見的byte資料類型改為了char(1)資料類型。。。
在頁面顯示的時候,就比較難處理了。資料讀出之後變為杯具的string型,顯示在介面上 感覺光禿禿的。。。
而且在綁定CheckBox等只有兩種狀態的控制項時,轉換時比較困難。。。
因此,我們就會想 是不是可以把他在介面上顯示的時候變為是或否,在增加的時候變為bool值,使他能夠綁定CheckBox???
對策
有人會說 在讀取資料的時候,把他判斷一下不就得了呀。。。
問題是:我們現在有三種類型,不!應該叫狀態。。。string型的“是”/“否”、true/false、string類型的“1”/“0”
三個狀態。。。在資料讀取的時候轉化有點糾結。。。。
我的方案
可以從類的屬性下手。。。。
為string的“1”/“0”建立兩個輔助屬性,一個是string類型一個是bool類型。。。
在綁定的時候,需要那個就綁定那個屬性。。。不用再費力的判斷。。。
儲存到資料庫的屬性不變。。。還是為“1”/“0”
看代碼:
C#
/// <summary>
/// 採購類型預設值(new)
/// </summary>
public string PurType_DefaultFlag { set; get; }
public string DefaultFlagString
{
get
{
_defaultflagstring = PurType_DefaultFlag == "0" ? "是" : "否";
return _defaultflagstring;
}
set
{
_defaultflagstring = value;
PurType_DefaultFlag = value == "是" ? "0" : "1";
}
}
public bool DefaultFlagBool
{
get
{
_defaultflagbool = PurType_DefaultFlag == "0" ? true : false;
return _defaultflagbool;
}
set
{
_defaultflagbool = value;
PurType_DefaultFlag = value ? "0" : "1";
}
}
介面綁定
<sdk:DataGrid AutoGenerateColumns="False" Name="dgSettType" Margin="5"
ItemsSource="{Binding PurTypeList}"
SelectedItem="{Binding PurTypeModel}" IsReadOnly="True">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="採購類型名稱" Binding="{Binding PurType_Name}"/>
<sdk:DataGridTextColumn Header="採購類型預設值" Binding="{Binding DefaultFlagString}"/>
<sdk:DataGridTextColumn Header="排序列" Binding="{Binding R_OrderSN}" />
<sdk:DataGridTextColumn Header="說明" Binding="{Binding PurType_Remark}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
介面綁定
<sdk:Label Content="採購類型名稱:" Style="{StaticResource labStyle}"/>
<Controls:TextBoxEx AllowEmpty="False" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.PurType_Name,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}"/>
<sdk:Label Grid.Row="1" Content="採購類型預設值:" Style="{StaticResource labStyle}"/>
<CheckBox x:Name="chks" Grid.Row="1" Grid.Column="1" Margin="5,15,0,0" IsChecked="{Binding DefaultFlagBool,Mode=TwoWay}"
<sdk:Label Grid.Row="2" Content="排序列:" Style="{StaticResource labStyle}"/>
<TextBox Grid.Row="2" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.R_OrderSN,Mode=TwoWay}"/>
<sdk:Label Grid.Row="3" Content="備 註:" Style="{StaticResource labStyle}"/>
<TextBox Grid.Row="3" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.PurType_Remark,Mode=TwoWay}"/>
儲存的時候儲存,他的原值屬性即可。。。
效果預覽:
作者:記憶逝去的青春
出處:http://www.cnblogs.com/lukun/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,如有問題,可以通過http://www.cnblogs.com/lukun/ 聯絡我,非常感謝。