0
我在我的WPF 4基於桌面的應用程序中有一個DataGrid與數據。 當用戶在行上單擊兩次時,DataGrid切換到編輯模式,其中用戶可以更改單元格的值。現在我想讓特定的單元格用戶只能從組合框中選擇值,例如性別 - 男性/女性,而不是鍵入其他東西。在Datagrid行編輯上顯示組合框,WPF
如何在DataGrid的編輯模式下顯示組合框?
謝謝。
我在我的WPF 4基於桌面的應用程序中有一個DataGrid與數據。 當用戶在行上單擊兩次時,DataGrid切換到編輯模式,其中用戶可以更改單元格的值。現在我想讓特定的單元格用戶只能從組合框中選擇值,例如性別 - 男性/女性,而不是鍵入其他東西。在Datagrid行編輯上顯示組合框,WPF
如何在DataGrid的編輯模式下顯示組合框?
謝謝。
許多實際上是不同的方式,
綁定到一個枚舉
public enum ChoiseEnum
{
Yes,
No,
Maybe
}
首先你會需要一個ObjectDataProvider的
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<ObjectDataProvider MethodName="GetValues"
ObjectType="{x:Type sys:Enum}"
x:Key="ChoiseEnumDataProvider">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:ChoiseEnum" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
然後,我們可以綁定一個DataGridComboBoxColumn到一個叫做Choise的房產,像這樣
從靜態列表在ComboBoxUPDATE個
<DataGrid Name="c_dataGrid" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridComboBoxColumn Header="Choise" SelectedItemBinding="{Binding Choise}" ItemsSource="{Binding Source={StaticResource ChoiseEnumDataProvider}}"/> </DataGrid.Columns> </DataGrid>
僅顯示值
增加了更多的細節
namespace ComboBoxDataGrid
{
public class TestClass
{
static TestClass()
{
ChoiseData = new List<string>();
ChoiseData.Add("Yes");
ChoiseData.Add("No");
ChoiseData.Add("Maybe");
}
public static List<string> ChoiseData
{
get;
set;
}
public TestClass()
{
SelectedChoise = string.Empty;
}
public TestClass(string selectedChoise)
{
SelectedChoise = selectedChoise;
}
public string SelectedChoise
{
get;
set;
}
}
}
public partial class WinWorkers: Window
{
public WinWorkers()
{
InitializeComponent();
TestClasses = new ObservableCollection<TestClass>();
TestClasses.Add(new TestClass("Yes1"));
TestClasses.Add(new TestClass("No"));
TestClasses.Add(new TestClass("Maybe"));
c_dataGrid.ItemsSource = TestClasses;
}
public ObservableCollection<TestClass> TestClasses
{
get;
set;
}
}
<Window x:Class="ComboBoxDataGrid.WinWorkers"
xmlns:local="clr-namespace:ComboBoxDataGrid"
...>
<Window.Resources>
<local:TestClass x:Key="TestClass" />
</Window.Resources>
<Grid>
<DataGrid Name="c_dataGrid"
AutoGenerateColumns="False"
RowHeaderWidth="100">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Choise_StaticList"
SelectedValueBinding="{Binding SelectedChoise}"
ItemsSource="{Binding Source={StaticResource TestClass}, Path=ChoiseData}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
我已經試過你最後的方式,但實際上沒有進行綁定,我看到一個乾淨的組合框。我的窗口被稱爲WinWorkers。我已經在WinWorkers.cs中創建了一個值列表,添加了getter和setter,正如你所提到的。在WinWorkers.xaml中,我以不同的方式放置DataGridComboBoxColumn和setuped ItemSource,但它不起作用。例如ItemsSource =「{Binding Path = ListName}」不起作用。如何連接到列表«genderList»,在同一個班級創建?謝謝。 – 2010-10-24 00:13:25
用更多細節更新了第二個例子 – 2010-10-24 08:39:36