刚才发了一贴关于datagrid的操作,没写清楚是web还是winform的,多谢刚才几位高手的帮助,这里重新发一次。
是web版的wpf开发,前台是xaml文件,后台是c#文件,现在要实现动态的控制datagrid中的单元格的背景色控制,
后台数据绑定是利用datacontext=model来实现刚才根据讲解写出来的代码如下:
xaml文件上:头部文件<wps:PageBase x:Class="FastRetailing.G1.WPS.Client.Biz.Monthly.View.Monthlylaborcostview"
      xmlns:wtk="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/up-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      
     xmlns:wps="clr-namespace:FastRetailing.G1.WPS.Framework.Client.Base;assembly=WPS.Framework.Client"
      xmlns:wpsv="clr-namespace:FastRetailing.G1.WPS.Framework.Client.Validation;assembly=WPS.Framework.Client"
      xmlns:l="clr-namespace:FastRetailing.G1.WPS.Client.Biz.Monthly.View"      datagrid的文件部分:<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 ValueConVerter }}">
                            </Setter>
                        </Style >
                    </my:DataGridTextColumn.CellStyle>
                </my:DataGridTextColumn>            </my:DataGrid.Columns>
</my:DataGrid>后台c#代码如下:
public class ValueConVerter : 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();
        }
    }我现在出现的问题是标注红色的Converter部分总是提示找不到文件名,这个问题是因为我前台未到如什么文件,还是后台的这个类的创建位置有问题
谢谢各位!

解决方案 »

  1.   

    我发一个适用于wpf浏览器应用程序的xaml和后台<Page x:Class="WpfBrowserApplication1.Page1"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:mc="http://schemas.openxmlformats.org/up-compatibility/2006" 
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
          mc:Ignorable="d" 
           xmlns:local="clr-namespace:WpfBrowserApplication1"
          d:DesignHeight="500" d:DesignWidth="300"
          Title="Page1">
        <Page.Resources>
            <local:ConVerter x:Key="Converter" />
        </Page.Resources>
        <Grid>
            <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>
        </Grid>
    </Page>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Data;namespace WpfBrowserApplication1
    {
        /// <summary>
        /// Page1.xaml 的交互逻辑
        /// </summary>
        public partial class Page1 : Page
        {
            DataTable dt = new DataTable();
            public Page1()
            {
                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();
            }
        }
    }
      

  2.   

    http://www.codeproject.com/KB/WPF/MVVM_DataGrid.aspx
      

  3.   

    我再提个建议,虽然可以做WPF浏览器应用程序,但最好不要用这种方式,因为一旦客户端程序涉及到系统操作,必须要有证书,这个讨厌的证书只能由客户设置浏览器安全项,或者在安装程序中直接安装证书,很麻烦。
    所以如果是WEB程序同时具有WPF的优势,就采用SilverLight。
    WPF浏览器应用程序本质上其实和WPF桌面程序一样都需要安装,反倒多了证书的麻烦,不如直接作桌面的。