DataGrid 添加ComboBox

 
<DataGrid Margin="0,90,0,0"  Grid.Row="1" EnableColumnVirtualization="False" EnableRowVirtualization="False"
                        x:Name="deviceDataGrid" ItemsSource="{Binding}" 
                        AlternatingRowBackground="#FFB0E0FF"
                        AutoGenerateColumns="False" FontSize="14" HorizontalScrollBarVisibility="Disabled" >
            <DataGrid.Columns>
                <!--CamaraName , FrameRate, DllName, Ip, Port, Channel, Account, PassWord, AreaId -->
                <DataGridTextColumn Header="摄像头名字" Width="*" Binding="{Binding DeviceName}"/>
                <DataGridTextColumn Header="帧率" Width="*" Binding="{Binding FrameRate}"  MaxWidth="50"/>
                <DataGridTextColumn Header="动态链接文件" Width="*" Binding="{Binding DllName}"/>
                <DataGridTextColumn Header="Ip地址" Width="*" Binding="{Binding Ip}" IsReadOnly="True"  MaxWidth="120"/>
                <DataGridTextColumn Header="端口" Width="*" Binding="{Binding Port}" IsReadOnly="True" MaxWidth="60"/>
                <DataGridTextColumn Header="通道号" Width="*" Binding="{Binding Channel}" IsReadOnly="True" MaxWidth="60"/>
                <DataGridTextColumn Header="登录名" Width="*" Binding="{Binding Account}"/>
                <DataGridTextColumn Header="登录密码" Width="*" Binding="{Binding PassWord}"/>
                <!--DataGridComboBoxColumn  Header="所属区域" Width="*" SelectedValueBinding="{Binding Path=AreaName}" TextBinding="{Binding Path=AreaName}" SelectedItemBinding="{Binding Path=AreaId}"/-->


                <!--DataGridTemplateColumn Header="Template模式">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox Name="areaListComboBox" SelectedValue="{Binding Path=AreaName}"  />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn-->


                <DataGridComboBoxColumn  Header="所属区域"  TextBinding="{Binding Path=Text}"  >
                    <DataGridComboBoxColumn.EditingElementStyle>
                        <Style TargetType="ComboBox">
                            <Setter Property="ItemsSource" Value="{Binding AreaInfo}" />
                            <Setter Property="SelectedValue" Value="{Binding AreaIdSelected}" />
                            <Setter Property="SelectedValuePath"  Value="{Binding AreaId_Camara}" />
                            <Setter Property="DisplayMemberPath"  Value="{Binding AreaName_Camara}" />
                        </Style>
                    </DataGridComboBoxColumn.EditingElementStyle>
                    <DataGridComboBoxColumn.ElementStyle>
                        <Style TargetType="ComboBox">
                            <Setter Property="ItemsSource" Value="{Binding AreaInfo}" />
                            <Setter Property="SelectedValue" Value="{Binding AreaIdSelected}" />
                            <Setter Property="SelectedValuePath"  Value="{Binding AreaId_Camara}" />
                            <Setter Property="DisplayMemberPath"  Value="{Binding AreaName_Camara}" />
                        </Style>
                    </DataGridComboBoxColumn.ElementStyle>
                </DataGridComboBoxColumn>


                <DataGridCheckBoxColumn MaxWidth="50" Header="选中" Width="*" Binding="{Binding Choose}"/>
                <DataGridTextColumn Header="状态" Width="*" Binding="{Binding State}" IsReadOnly="True" MaxWidth="120" />
            </DataGrid.Columns>
        </DataGrid>



、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、


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.Collections.ObjectModel;
using System.ComponentModel;


namespace DataGridTestWPF
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        ObservableCollection<CamaraInfo> camaraInfoCollection = new ObservableCollection<CamaraInfo>();




        public MainWindow()
        {
            InitializeComponent();


            camaraInfoCollection.Add(new CamaraInfo("摄像头1", 1, "DLL.dll", "192.168.1.253", 8000, 1, 
                        "admin", "12345", "区域名oo", 1, false, "无"));
            camaraInfoCollection.Add(new CamaraInfo("摄像头1", 1, "DLL.dll", "192.168.1.253", 8000, 1,
                        "admin", "12345", "区域名oo", 1, false, "无"));
            camaraInfoCollection.Add(new CamaraInfo("摄像头1", 1, "DLL.dll", "192.168.1.253", 8000, 1,
                        "admin", "12345", "区域名oo", 1, false, "无"));
            deviceDataGrid.ItemsSource = camaraInfoCollection;


            Dictionary<int, string> mydic = new Dictionary<int, string>() { 
            {0,"aaaa"},
            {1,"bbbb"},
            {2,"cccc"}
            };
            cobxUserType.ItemsSource = mydic;
            cobxUserType.SelectedValuePath = "Key";
            cobxUserType.DisplayMemberPath = "Value";
            //areaListComboBox.ItemsSource = areaInfoCollection;
        }


        private void submit_Click(object sender, RoutedEventArgs e)
        {
            //Control.se
            System.Collections.IList camaraInfoSelectedCollection = (System.Collections.IList)deviceDataGrid.SelectedItems;
            MessageBox.Show(((CamaraInfo)deviceDataGrid.SelectedItems[0]).AreaIdSelected + "");
        }
    }


    public class AreaInfo
    {
        
        public string AreaName { get; set; }
        public int AreaId { get; set; }


        public AreaInfo( string AreaName, int AreaId )
        {
            this.AreaName = AreaName;
            this.AreaId = AreaId;
        }
    }






    public class CamaraInfo
    {
        public event PropertyChangedEventHandler PropertyChanged;


        public string DeviceName { get; set; }
        public uint FrameRate { get; set; }
        public string DllName { get; set; }
        public string Ip { get; set; }
        public uint Port { get; set; }
        public uint Channel { get; set; }
        public string Account { get; set; }
        public string PassWord { get; set; }
        public string AreaName_Camara { get; set; }
        public string AreaId_Camara { get; set; }
        public bool Choose { get; set; }
        public string State { get; set; }


        private int areaIdSelected;
        public int AreaIdSelected
        {
            get
            {
                return areaIdSelected;
            }
            set
            {
                areaIdSelected = value;
                if (PropertyChanged != null)//有改变  
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("AreaIdSelected"));//对Name进行监听  
                }
            }
        }
        public string Text { get; set; }


        public ObservableCollection<AreaInfo> AreaInfo { get; set; }
        ObservableCollection<AreaInfo> areaInfoCollection = new ObservableCollection<AreaInfo>();


        public CamaraInfo(string DeviceName, uint FrameRate, string DllName, string Ip, uint Port, uint Channel, 
                        string Account, string PassWord, string AreaName, uint AreaId, bool Choose, string State)
        {
            this.DeviceName = DeviceName;
            this.FrameRate = FrameRate;
            this.DllName = DllName;
            this.Ip = Ip;
            this.Port = Port;
            this.Channel = Channel;
            this.Account = Account;
            this.PassWord = PassWord;
            this.AreaName_Camara = "AreaName";
            this.AreaId_Camara = "AreaId";
            this.AreaIdSelected = 2;
            this.Text = "AreaId2";
            this.Choose = Choose;
            this.State = State;


            areaInfoCollection.Add(new AreaInfo("AreaId1", 1));
            areaInfoCollection.Add(new AreaInfo("AreaId2", 2));
            AreaInfo = areaInfoCollection;
        }
    }
}




下载地址:

http://download.youkuaiyun.com/detail/smallnew198705/8226919


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值