将控件从绑定到代码到WPF c#
我正在尝试将组合框从代码隐藏绑定到XAML。 这是我的XAML部分:将控件从绑定到代码到WPF c#,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试将组合框从代码隐藏绑定到XAML。 这是我的XAML部分: <GridViewColumn Header="Action Type"> <GridViewColumn.CellTemplate> <DataTemplate> <ComboBox x:Name="comboBox" ItemsSource="{Binding ActionType}"/> </DataTemplate>
<GridViewColumn Header="Action Type">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="comboBox" ItemsSource="{Binding ActionType}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
我怎样才能完成这样的任务?通常,是否可以将代码中的控件附加到XAML部分?您只需要设置组合框的ItemSource属性
List<ActionTypes> Actions = new List<ActionTypes>();
Actions.add(); etc.....
comboBox.ItemSource = Actions;
List Actions=new List();
Actions.add();等
comboBox.ItemSource=操作;
您只需要设置组合框的ItemSource属性
List<ActionTypes> Actions = new List<ActionTypes>();
Actions.add(); etc.....
comboBox.ItemSource = Actions;
List Actions=new List();
Actions.add();等
comboBox.ItemSource=操作;
按需要定义您的属性:
public Ilist<string> ActionType
{
get { return _actionType; }
set
{
_actionType= value;
OnPropertyChanged("ActionType");
}
}
公共Ilist操作类型
{
获取{return\u actionType;}
设置
{
_actionType=值;
OnPropertyChanged(“ActionType”);
}
}
当您设置它的值时,它将被通知到组合框,而不会出现脏代码隐藏。按其应该的方式定义您的属性:
public Ilist<string> ActionType
{
get { return _actionType; }
set
{
_actionType= value;
OnPropertyChanged("ActionType");
}
}
公共Ilist操作类型
{
获取{return\u actionType;}
设置
{
_actionType=值;
OnPropertyChanged(“ActionType”);
}
}
当您设置它的值时,它将被通知到组合框,而不会有脏代码隐藏。为了让它工作,我做了这个,我更改了: C# //吸气剂设定器 公共列表ActionTypeList{get;set;}
// init
ActionTypeList = Enum.GetNames(typeof(Data.Structures.ActionType)).ToList();
XAML
//要列出的项目源
这不是使组合框的枚举类型正常工作的最佳方法。选择和操作后,我在字符串上切换大小写。不知何故,在wpf字段中使用枚举和组合框会让人感觉脏兮兮的……我重新考虑了它,可能会再次删除枚举。为了让它正常工作,我做了这个,我更改了: C# //吸气剂设定器 公共列表ActionTypeList{get;set;}
// init
ActionTypeList = Enum.GetNames(typeof(Data.Structures.ActionType)).ToList();
XAML
//要列出的项目源
这不是使组合框的枚举类型正常工作的最佳方法。选择和操作后,我在字符串上切换大小写。不知何故,在wpf字段中使用枚举和组合框会让人感觉脏兮兮的……我重新考虑了一下,可能会再次删除枚举。以下是我制定的解决方案 枚举称为“ActionToggle”。然后我做了以下几点: 在MainWindow.xaml.cs中,我定义了:
public List<string> ActionToggleList { get; set; }
初始化MainWindow时,我添加了:
ActionToggleList = new List<string>();
ActionToggleList = Enum.GetNames(typeof(ActionToggle)).ToList();
也许不是最好的100%WPF STLYD解决方案,但我想这是一个直截了当的解决方案。
只有当枚举很小时,这才是好的。如果枚举较大,可能会使用另一个更具动态性的解决方案。以下是我制定的解决方案 枚举称为“ActionToggle”。然后我做了以下几点: 在MainWindow.xaml.cs中,我定义了:
public List<string> ActionToggleList { get; set; }
初始化MainWindow时,我添加了:
ActionToggleList = new List<string>();
ActionToggleList = Enum.GetNames(typeof(ActionToggle)).ToList();
也许不是最好的100%WPF STLYD解决方案,但我想这是一个直截了当的解决方案。
只有当枚举很小时,这才是好的。如果枚举较大,可能会使用另一个更具动态性的解决方案。不确定ComboBox属性需要什么,它闻起来真的很糟糕。我想向该ComboBox添加一个枚举,并在填充项后将其绑定。->当前,组合框中的绑定为空。不确定该组合框属性需要什么,它闻起来非常糟糕。我想向该组合框中添加一个枚举,并在填充项后将其绑定。->当前组合框为空,其中binding.comboBox.ItemSource=Actions;这是对我上面代码的补充吗?comboBox.ItemSource=Actions;这是我上面代码中的新增内容吗?列表仍然为空。@TonyB您能在输出中看到任何绑定错误吗?网格是否具有正确的datacontext?我使用了一个可观察的集合,在那里添加了项,并将itemsource设置到组合框中。这显然不起作用。不知何故,我没有使您的示例起作用,我做了一些更改,它起作用了。@TonyB您能告诉我们您是如何使其起作用的吗?列表仍然为空。@TonyB您能在输出中看到任何绑定错误吗?网格是否具有正确的datacontext?我使用了一个可观察的集合,在那里添加了项,并将itemsource设置到组合框中。这显然不起作用。不知何故,我没有让您的示例起作用,我做了一些更改,它起作用了。@TonyB您能告诉我们您是如何使其起作用的吗?keeping enmus:因为您可以更轻松地添加更多标志/枚举值。CoolEnmus:因为您可以更轻松地添加更多标志/枚举值。凉爽的