下拉框列实现效果图
XAML源码:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="589" Width="537"
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit">
<Grid>
<!--<DockPanel >-->
<!--<Button DockPanel.Dock="Top">Button
</Button>
<TextBox AcceptsReturn="True" DockPanel.Dock="Top" VerticalScrollBarVisibility="Visible">TextBox Test Test Test Test Test
</TextBox>
<Button Height="23" Name="button1" Width="75" DockPanel.Dock="Top">Button</Button>-->
<my:DataGrid Name="data" Height="200" Width="500" AutoGenerateColumns="False" >
<my:DataGrid.Columns>
<my:DataGridComboBoxColumn Header="下拉" DisplayMemberPath="name" SelectedValuePath="code" SelectedValueBinding="{Binding code}"></my:DataGridComboBoxColumn>
</my:DataGrid.Columns>
</my:DataGrid>
<Button Height="23" HorizontalAlignment="Left" Margin="54,0,0,110" Name="button1" VerticalAlignment="Bottom" Width="75" Click="button1_Click">取值</Button>
<Button Height="23" Margin="0,0,104,111.361" Name="button2" VerticalAlignment="Bottom" Click="button2_Click" HorizontalAlignment="Right" Width="75">赋值</Button>
<TextBox Height="23" Margin="169,0,226,110" Name="textBox1" VerticalAlignment="Bottom"/>
<!--</DockPanel>-->
</Grid>
</Window>
C#源码:
public Window1()
{
InitializeComponent();
//this.Loaded += new RoutedEventHandler(Window1_Loaded);
DataGridComboBoxColumn dd = data.Columns[0] as DataGridComboBoxColumn;
DataTable dt = new DataTable();
dt.Columns.Add("code");
dt.Columns.Add("name");
dt.Rows.Add("1", "a");
dt.Rows.Add("2", "b");
dt.Rows.Add("3", "c");
dt.Rows.Add("4", "d");
dd.ItemsSource = dt.DefaultView;
DataTable dte = new DataTable();
dte.Columns.Add("code");
dte.Columns.Add("tex");
dte.Rows.Add("1", "a");
dte.Rows.Add("2", "b");
dte.Rows.Add("3", "c");
dte.Rows.Add("4", "d");
data.ItemsSource = dte.DefaultView;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
DataRowView drv = data.SelectedItem as DataRowView;
textBox1.Text = drv["code"].ToString();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
DataRowView drv = data.SelectedItem as DataRowView;
drv["code"] = textBox1.Text;
}