使用绑定重构XAML代码

时间:2009-03-19 02:35:31

标签: wpf binding refactoring user-controls

我尝试通过引入新的用户控件来重构这样的XAML:

<Window ...>
  <ComboBox ItemsSource="{Binding Greetings}" />
</Window>

添加控件后我有

ControlA XAML:

<UserControl ...>
  <ComboBox ItemsSource="{Binding Items}" />
</UserControl>

ControlA C#:

public static readonly DependencyProperty ItemsProperty =
  WpfUtils.Property<IEnumerable, ControlA>("Items");

public IEnumerable Items { get; set; }

新窗口XAML:

<Window ...>
  <uc:ControlA Items="{Binding Greetings}" />
</Window>

在此之后,我在ComboBox中看不到任何内容。这有什么不对?

1 个答案:

答案 0 :(得分:0)

您的ComboBox绑定到DataContext。由于您的DataContext仍然是一个带有名为Greetings的列表的对象,因此无法正常工作......

你的ContolA应该像这样:

<UserControl x:Name="Root" ...>
  <ComboBox ItemsSource="{Binding ElementName=Root, Path=Items}" />
</UserControl>

现在,你的组合框绑定到ControlA的Items属性,而不是你的DataContext属性......

希望这会有所帮助..