我有一个带有GridView列的ComboBox:
...
<GridView AllowsColumnReorder="True" ColumnHeaderToolTip="Info test">
<GridViewColumn Header="Number" Width="120">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=extensions}" Width="105" IsEditable="True" HorizontalAlignment="Center" Margin="0,0,0,0" BorderThickness="0">
<ComboBox.Resources>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">15</sys:Double>
</ComboBox.Resources>
</ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
...
在后面的代码中,“extensions”是一个ObserverableCollection<string>
,它被100%初始化并填充(这是在类构造函数中):
public partial class MyForm : Window
{
...
public ObservableCollection<string> extensions;
...
public MyForm()
{
...
Initialize();
}
private Initialize()
{
extensions = new ObservableCollection<string>();
extensions.Add("x100");
extensions.Add("x101");
}
}
但是当组合框出现时应用程序运行时,绑定永远不会发生。完成/正确需要哪些额外的步骤?
答案 0 :(得分:2)
首先不要使用公共字段,而是使用属性。据我所知,公共字段不适用于绑定。
public ObservableCollection<string> extensions {get; private set;}
其次,组合框的datacontext可能未设置为MyForm实例。 试试这个
<ComboBox ItemsSource="{Binding Path=extensions, RelativeSource={RelativeSource AncestorType={x:Type MyForm}}}" ... >