2
我有一個DataGridColumn,它表示一個條目是否是主顯示值,但是該值是以「Y」或「N」的形式存儲在數據庫中的。如何爲WPF RadioButton創建一個布爾到字符串轉換器?
<Window.Resources>
<local:BoolToPrimaryConverter x:Key="BoolToPrimaryConverter" />
</Window.Resources>
<DataGrid Name="NamingDatagrid" AutoGenerateColumns="False" ItemsSource="{Binding EntityReferences, Mode=TwoWay}"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Convention" Binding="{Binding ReferenceType}"/>
<DataGridTextColumn Header="Value" Binding="{Binding ReferenceValue}" />
<DataGridTemplateColumn Header="Primary" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="Prime" IsChecked="{Binding Primary, Mode=TwoWay, Converter={StaticResource BoolToPrimaryConverter}, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
布爾到字符串轉換
class BoolToPrimaryConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return ((value as string).Equals("Y")) ? true : false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
return (bool)value ? "Y" : "N";
}
}
,儘管轉換器設置,這是從來沒有所謂的(與調試檢查)。有什麼我想念我需要得到這個工作?
編輯:添加了主要來自的類。
[Serializable]
[EdmEntityType(NamespaceName = "cContainer", Name = "LUREFFORMAT")]
[DataContract(IsReference = true)]
public class LUREFFORMAT : EntityObject {
public LUREFFORMAT();
[DataMember]
[EdmScalarProperty(EntityKeyProperty = false, IsNullable = false)]
public short DISPLAYORDER { get; set; }
[DataMember]
[EdmScalarProperty(EntityKeyProperty = false, IsNullable = false)]
public short ENABLED { get; set; }
[DataMember]
[EdmScalarProperty(EntityKeyProperty = true, IsNullable = false)]
public long ID { get; set; }
[EdmScalarProperty(EntityKeyProperty = false, IsNullable = false)]
[DataMember]
public string ISUNIQUE { get; set; }
[DataMember]
[XmlIgnore]
[EdmRelationshipNavigationProperty("cContainer", "FK_REFS_REFFORMATID", "REFS")]
[SoapIgnore]
public EntityCollection<PLATFORMREFS> REFS { get; set; }
[EdmScalarProperty(EntityKeyProperty = false, IsNullable = false)]
[DataMember]
public string PRIMARY { get; set; }
[DataMember]
[EdmScalarProperty(EntityKeyProperty = false, IsNullable = false)]
public string REFFORMAT { get; set; }
public static LUREFFORMAT CreateLUREFFORMAT(long id, string rEFFORMAT, string pRIMARY, string iSUNIQUE, short dISPLAYORDER, short eNABLED);
}
編輯2:添加EntityRefs屬性
public EntityCollection<PLATFORMREFS> EntityRefs {
get {
return entityRefs;
}
set {
entityRefs = value;
OnPropertyChanged("EntityRefs");
}
}
如何使用datagridtemplate? –
@Bob:這只是你的XAML的摘錄? DataGridTemplateColumn應位於DataGrid.Columns定義內,該定義應位於DataGrid內。 – Surfbutler
你能告訴我們你的班級在哪裏你有主要財產和地方你分配ItemsSource? – kmatyaszek