C# 布尔型DataGridComboxColumn显示是/否
我有一个与集合绑定的dataGrid。对于两列A和B,数据为1或0。 相反,我想在comboBoxColumn中显示Yes或No,当然,如果选择Yes,则保存1,选择No则保存0 我该怎么做 看法 视图模型 模型 使现代化 我试过这两种方法,但都不管用C# 布尔型DataGridComboxColumn显示是/否,c#,wpf,datagridcomboboxcolumn,C#,Wpf,Datagridcomboboxcolumn,我有一个与集合绑定的dataGrid。对于两列A和B,数据为1或0。 相反,我想在comboBoxColumn中显示Yes或No,当然,如果选择Yes,则保存1,选择No则保存0 我该怎么做 看法 视图模型 模型 使现代化 我试过这两种方法,但都不管用 <Page.Resources> <hlp:YesNoToBooleanConverter x:Key="YesNoToConverter" /> </Page.Resources> <
<Page.Resources>
<hlp:YesNoToBooleanConverter x:Key="YesNoToConverter" />
</Page.Resources>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding A}"
SelectedValue="{Binding A}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Name="TextBlock" Text="No" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="1">
<Setter TargetName="TextBlock" Property="Text" Value="Yes" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding B}"
SelectedValue="{Binding B}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource YesNoToConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
public class YesNoToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
byte inValue = System.Convert.ToByte(value);
string outValue = (inValue == 1) ? "Yes" : "No";
return outValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch (value.ToString().Trim().ToLower())
{
case "yes":
return 1;
case "no":
return 0;
default:
return 0;
}
}
}
我可以向你推荐这个问题的下一个确切解决方案。请看这个。 1.组合框XAML代码:
<DataGridComboBoxColumn Header="ActivityStatus" SelectedItemBinding="{Binding IsActive, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ItemsSource>
<x:Array Type="system:Boolean">
<system:Boolean>True</system:Boolean>
<system:Boolean>False</system:Boolean>
</x:Array>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>
您可以在此堆栈溢出查询链接上看到整个解决方案:
关于,您能分享一下您的产品型号吗
public partial class product
{
public int idproduct { get; set; }
public string refsup { get; set; }
public string description { get; set; }
public Nullable<int> unit { get; set; }
public sbyte larot { get; set; }
public sbyte lasand { get; set; }
public virtual foodSupplier foodSupplier { get; set; }
public virtual unit unit1 { get; set; }
}
<Page.Resources>
<hlp:YesNoToBooleanConverter x:Key="YesNoToConverter" />
</Page.Resources>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding A}"
SelectedValue="{Binding A}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Name="TextBlock" Text="No" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="1">
<Setter TargetName="TextBlock" Property="Text" Value="Yes" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding B}"
SelectedValue="{Binding B}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource YesNoToConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
public class YesNoToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
byte inValue = System.Convert.ToByte(value);
string outValue = (inValue == 1) ? "Yes" : "No";
return outValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch (value.ToString().Trim().ToLower())
{
case "yes":
return 1;
case "no":
return 0;
default:
return 0;
}
}
}
<DataGridComboBoxColumn Header="ActivityStatus" SelectedItemBinding="{Binding IsActive, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ItemsSource>
<x:Array Type="system:Boolean">
<system:Boolean>True</system:Boolean>
<system:Boolean>False</system:Boolean>
</x:Array>
</DataGridComboBoxColumn.ItemsSource>
</DataGridComboBoxColumn>