最近新接个项目,用wpf做的系统从来没有做过,画面是xaml的文件,后台用c#太困难了,找个属性都找不到
现在需要在前台DATAGRID中根据数据动态设置单元格的背景属性,查了半天,光知道是需要绑定的,但是具体步骤还是不清楚
无从下手阿,
哪位高手做过给指条名路吧,谢谢!
现在需要在前台DATAGRID中根据数据动态设置单元格的背景属性,查了半天,光知道是需要绑定的,但是具体步骤还是不清楚
无从下手阿,
哪位高手做过给指条名路吧,谢谢!
解决方案 »
- 【感谢放歌,sp,阿非,vrhero】经过指点后的修改
- c#如何获得可以根据字体选择获得点阵字库?
- combobox绑定一列值的问题
- BindingContext[ds,"table"] 与BindingContext[ds.table]有什么区别?
- 如何使窗体的最大化按钮变灰失效?
- c# winform如何打印图片?
- 关于一个播放器的算法
- WebService调用慢?????????????
- C# ListView中修改item的label
- 高手请进,如何得到字符串的首地址,加急!!!!!!!!!!!!!!!!
- 关于WPF ICollectionView Filter的问题
- GridView设置列宽的问题
大概流程我清楚了,但是前台的xaml文件里面如何定义能使绑定的值只针对某一个单元格
后台代码我看网上的资料说是在model里写属性设置,但是具体怎么写啊
<Window x:Class="WpfApplication11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication11"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:ConVerter x:Key="Converter" />
</Window.Resources>
<DataGrid AutoGenerateColumns="False" Height="310" Name="dataGrid1" Width="346" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=A}" Header="Header" />
<DataGridTextColumn Binding="{Binding Path=B}" Header="Header" />
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" >
<Setter Property="Background" Value="{Binding Path=A, Converter={StaticResource Converter}}"/>
</Style>
</DataGrid.CellStyle>
</DataGrid>
</Window>
public partial class MainWindow : Window
{
DataTable dt = new DataTable();
public MainWindow()
{
dt.Columns.Add("A",typeof(int));
dt.Columns.Add("B",typeof(int));
for (int i = 0; i < 20; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 5;
dt.Rows.Add(dr);
}
dt.AcceptChanges();
InitializeComponent();
dataGrid1.DataContext = dt.DefaultView;
}
}
public class ConVerter : IValueConverter
{ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((int)value > 10)
{
return Brushes.Blue;
}
else
{
return Brushes.Green;
}
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
[code=XML]
<Window x:Class="WpfApplication11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication11"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:ConVerter x:Key="Converter" />
</Window.Resources>
<DataGrid AutoGenerateColumns="False" Height="310" Name="dataGrid1" Width="346" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=A}" Header="Header1">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" >
<Setter Property="Background" Value="{Binding Path=A, Converter={StaticResource Converter}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=B}" Header="Header2">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" >
<Setter Property="Background" Value="{Binding Path=B, Converter={StaticResource Converter}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Window>
/code]
<Window x:Class="WpfApplication11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication11"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:ConVerter x:Key="Converter" />
</Window.Resources>
<DataGrid AutoGenerateColumns="False" Height="310" Name="dataGrid1" Width="346" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=A}" Header="Header1">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" >
<Setter Property="Background" Value="{Binding Path=A, Converter={StaticResource Converter}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=B}" Header="Header2">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" >
<Setter Property="Background" Value="{Binding Path=B, Converter={StaticResource Converter}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Window>
表明命名空间
<local:ConVerter x:Key="Converter" />
该命名空间下的类名,然后定义一个键值
<my:DataGrid ItemsSource="{Binding}" Grid.Column="3" Grid.Row="3" Height="120" HorizontalAlignment="Left" Margin="1,0,0,0" Name="dataGrid1" VerticalAlignment="Bottom" Width="1000" Grid.ColumnSpan="5" SelectionMode="Single" SelectionUnit="Cell">
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="週間" Width="80" Binding="{Binding Path=Name}">
<my:DataGridTextColumn.CellStyle>
<Style TargetType = "my:DataGridCell">
<Setter Property="Background" Value="{Binding Path=Name, Converter={StaticResource Converter}}"> </Setter>
</Style >
</my:DataGridTextColumn.CellStyle>
</my:DataGridTextColumn> </my:DataGrid.Columns>
</my:DataGrid>这个是后台的新建的CLASS文件
public class ConVerter : IValueConverter
{ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((int)value > 10)
{
return Brushes.Blue;
}
else
{
return Brushes.Green;
}
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
<my:DataGrid Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Top" Name="dataGrid1" SelectionMode="Single"
Height="342" Width="780" RowBackground="#FFDFF0F4" AlternatingRowBackground="#FFD0DEE6" ColumnHeaderHeight="25" RowHeight="25" RowHeaderWidth="0"
HorizontalGridLinesBrush="#FF7E9AB0" VerticalGridLinesBrush="#FF7E9AB0" Background="White" CanUserAddRows="False" CanUserDeleteRows="False"
CanUserResizeRows="False" MouseDoubleClick="dataGrid1_MouseDoubleClick">
<my:DataGrid.ColumnHeaderStyle>
<Style TargetType="my:DataGridColumnHeader" >
<Setter Property="Background" Value="#FFBFCFDC"/>
<Setter Property="SeparatorVisibility" Value="Visible" />
<Setter Property="SeparatorBrush" Value="Black" />
</Style>
</my:DataGrid.ColumnHeaderStyle>
<my:DataGrid.Columns>
<my:DataGridTemplateColumn Header="选择" Width="0.03*">
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkPrint" IsChecked="{Binding IsChecked}" Click="chkPrint_Click"></CheckBox>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
<my:DataGridTextColumn Header="序号" IsReadOnly="True" Binding="{Binding Order}" Width="0.03*"/>
<!--<my:DataGridTextColumn Header="病区/科室" IsReadOnly="True" Binding="{Binding Col_Name}" Width="0.1*"/>-->
<my:DataGridTextColumn Header="制单时间" IsReadOnly="True" Binding="{Binding CreateTime, Converter={StaticResource DataTimeConverter}}" Width="0.14*"/>
<my:DataGridTextColumn Header="单据编号" IsReadOnly="True" Binding="{Binding No}" Width="0.1*"/>
<my:DataGridTextColumn Header="单据类型" IsReadOnly="True" Binding="{Binding TypeName}" Width="0.1*"/>
<my:DataGridTextColumn Header="数量" IsReadOnly="True" Binding="{Binding Quantity}" Width="0.1*"/>
<my:DataGridTextColumn Header="制单人" IsReadOnly="True" Binding="{Binding Handler}" Width="0.1*"/>
</my:DataGrid.Columns> </my:DataGrid>
这里面的DataTimeConverter是怎么倒进来的,我现在老是题是我找不到这个名字啊
不管是啥数据源,肯定都实现了IEnumerable接口,绑定方式和dataview都是一样的。