我試圖使用列表框顯示是/否並綁定到我的Sql Server數據庫中的位字段。
我的代碼(特別是我的綁定)看起來是否正確?列表框與IValueConverter Bool是是否...幾乎可以工作,但不完全
當使用它時,它使用Yes(true)語句或No(false)語句創建記錄,我甚至可以在數據庫中將No(false)更新爲Yes(true)... 。但是我不能編輯Yes(真)到No(False)...如果我調試了一切看起來不錯,直到我打我的RiaService,然後使用Sql Profiler,字段沒有更新。
哦,是的,如果我將這個相同的代碼綁定到varchar字段並排除轉換器,一切工作正常。
public class ConvertBoolToYesNo : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
string outValue;
bool inValue = (bool)value;
outValue = inValue ? "Yes" : "No";
return outValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
bool? outValue;
string inValue = (string)value;
inValue = inValue.Trim();
if (inValue == "Yes")
{
outValue = true;
}
else
if (inValue == "No")
{
outValue = false;
}
else
{
return DependencyProperty.UnsetValue;
}
return outValue;
}
<ListBox x:Name="lbCounselExempt"
ItemsSource="{Binding Path=Choices}"
DisplayMemberPath="Name"
SelectedValue="{Binding Path=Model.CounselExempt, Mode=TwoWay,Converter={StaticResource ConvertBoolToYesNo}}"
SelectedValuePath="Name"
Style="{StaticResource RadioButtonList}" />
我想我解決了或者至少找到了解決我自己問題的方法。在SQL表中,我有一個字段設置爲'位',它是可空的。在我的實體模型中,我將Nullable的field屬性設置爲'false'。一旦我將它設置爲「(無)」,事情就開始奏效。不知道爲什麼,我發現了很多關於這個主題的帖子,我很幸運,我的其他位域之一可以正常工作,我可以比較這些設置。 – MongooseNX