GridView复选框绑定
本文关键字:绑定 复选框 GridView | 更新日期: 2023-09-27 18:24:01
如何根据复选框选择在WPF中更改网格视图中文本块的值。WPF中的网格视图是从一个以ID和Value为列的sql表中填充的。这里的值是YES或NO。我正在使用linq进行sql。我有一个与网格视图中的每个ID相关联的复选框。当用户选择一些行时,我必须将更改保存回数据库。
因此,根据选择,我必须以这种方式更改行中的值字段:
如果网格视图的"Value"字段中的文本为"YES",则我必须将其更改为"NO"如果网格视图的"值"字段中的文本为"否",则我必须将其更改为"是"
我能够将数据填充到网格视图中,但我不确定我在上述场景中的问题是否适合WPF和c#。需要一些指导。
最好的方法是将Text块和复选框绑定到数据模型中的同一后端字段,然后使用代码转换器。
这里有一个简单的例子。
假设您有以下具有一个布尔属性的简单视图模型:
class SimpleViewModel: INotifyPropertyChanged
{
private bool _checked;
// The property to bind to
public bool Checked
{
get { return _checked; }
set { _checked = value; OnPropertyChanged("Checked"); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
这里还有一个简单的页面,其中有一个文本块和一个文本字段,它们都绑定到同一个后端字段。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:SimpleViewModel x:Key="simpleViewModel" />
<local:BoolToStringConverter x:Key="boolToStringConverter" />
</Window.Resources>
<Grid DataContext="{StaticResource simpleViewModel}">
<StackPanel>
<TextBlock Text="{Binding Checked, Converter={StaticResource boolToStringConverter}}" />
<CheckBox Content="something" IsChecked="{Binding Checked}" />
</StackPanel>
</Grid>
</Window>
现在请注意,文本块绑定语句包含一个converter语句。Text="{Binding Checked, Converter={StaticResource boolToStringConverter}}"
这里的转换器非常简单。如果值为true,则检查该值并返回Yes,否则返回NO。
public class BoolToStringConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return null;
if ((bool)value == true)
return "YES";
else
return "NO";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// this scenario is not needed since the text block is read only
throw new NotImplementedException();
}
}
您需要执行事件。单击控件并单击闪电粗体,然后在c#中的代码后面进行操作。关键字是events。OnChanged、Onclicked、onrowchange等都在该控件的属性框中,您可以更改代码中的值。
使用双向绑定将更改从UI传输到数据库。将复选框列绑定到SQL表中的"值"字段。绑定需要一个转换器才能从"是/否"转换为布尔。http://msdn.microsoft.com/en-us/magazine/cc163299.aspx#S3
http://msdn.microsoft.com/en-us/library/ms752347.aspx#data_conversion