我有以下两难困境。我已将数据提取到DataTable
。然后将该数据绑定到设计器中的ComboBox.ItemsSource
。然后我创建了一个包含多个文本框,复选框和其他内容的用户控件。现在,用户控件将在运行时更改,具体取决于最终用户选择的选项。
我需要弄清楚(并且一直在逃避我)是如何绑定用户控件' DataContext
在运行时ComboBox.SelectedItem
,以便在添加用户控件时,用户可以在ComboBox中选择一些内容,并更新用户控件上的所有控件。
任何帮助都将不胜感激。
其他信息:
每当用户点击列表框中的项目时,都会运行以下代码:
/// <summary>
/// Adds the passed user control to the appropriate grid location
/// </summary>
/// <param name="aUC"><seealso cref="System.Windows.Controls.UserControl"/> to add to the grid</param>
private void AddControl ( UserControl aUC ) {
// verifies that there are child controls, I can
// get an error if I don't perform this check ebfore
// attempting to remove all of the bindings
if ( this.pnlControls.Children.Count > 0 )
BindingOperations.ClearAllBindings ( this.pnlControls.Children [ 0 ] );
// remove all of child controls from the grid
this.pnlControls.Children.Clear ( );
// here I attempt to beind the datacontext of the given user control
// to the data context of the
BindingOperations.SetBinding ( aUC , UserControl.DataContextProperty , new Binding ( "SelectedItem" ) { Source = cbxReport } );
// finally...add the control
this.pnlControls.Children.Add ( aUC );
}
现在,在用户控件的XAML中,我有以下文本框:
<TextBox Grid.Column="1" Grid.ColumnSpan="5" Margin="2.5" DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext}" Text="{Binding Path='Report Title'}"/>
我认为这是它没有正确设置的地方。我在this.pnlControls.Childre.Add(aUC);
之后设置了断点,并且相应的值始终位于DataContext
属性中。
答案 0 :(得分:1)
我弄清楚问题是什么。 AncestorType被设置为错误的东西......这意味着我一直在做正确的事情。谢谢!