将控件从绑定到代码到WPF c#

将控件从绑定到代码到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>

我正在尝试将组合框从代码隐藏绑定到XAML。 这是我的XAML部分:

<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:因为您可以更轻松地添加更多标志/枚举值。凉爽的