在将 UserControl 元素添加到我的 MainPage 之前,如何为它赋值?
How can I assign values to UserControl elements before I add it to my MainPage?
在我的 Windows Store 应用程序中,我有一个带有添加按钮的 MainPage 和一个 UserControl,其中包含一个 TextBlock 和一个 Rectangle。当我单击 MainPage 上的 "Add" 按钮时,我想创建一个新的 UserControl 实例并为 TextBlock 分配一个字符串值。最后,我想将 UserControl 实例添加到 MainPage 上的容器元素。
这就是我的 ActionUserControl 现在的样子:
<Grid x:Name="ActionGrid">
<TextBlock x:Name="ActionText" Grid.Row="0" Text="Name Goes Here" />
</Grid>
和代码隐藏
public sealed partial class ActionUserControl : UserControl
{
public string ActionName { get; set; }
public ActionUserControl()
{
this.InitializeComponent();
}
}
这就是我在 MainPage AddButton_Click 事件中所做的事情
private void AddButton_Click(object sender, PointerRoutedEventArgs e)
{
// ActionCount holds number of active Actions
ActionCount++;
// Create an instance of the user control, and assign name
ActionUserControl auc = new ActionUserControl();
auc.ActionName = "Action " + ActionCount;
// Add the user control to the container
this.ActionContainer.Children.Add(auc);
// Move the add button to the bottom of the container for consistency
int childrenCount = this.ActionContainer.Children.Count;
this.ActionContainer.Children.Move((uint)childrenCount - 1, (uint)childrenCount - 2);
}
我已经尝试在 UserControl 构造函数和 PageLoad 事件上分配 ActionText.Text = ActionName,但它们都将变为 null。我应该绑定 ActionText.Text 值而不是尝试从代码隐藏设置它吗?
你可以...
- 使您的 ActionName 成为依赖项 属性 并绑定到它。
- 在 ActionName 属性中更改用户控件上的文本块 setter。
还要考虑:为什么要在代码中创建用户控件?您可以将您的 a 操作(作为字符串)添加到列表中,并使用 DataTemplate 在 ListBox(或其他 ItemsControl)中显示它们。
在我的 Windows Store 应用程序中,我有一个带有添加按钮的 MainPage 和一个 UserControl,其中包含一个 TextBlock 和一个 Rectangle。当我单击 MainPage 上的 "Add" 按钮时,我想创建一个新的 UserControl 实例并为 TextBlock 分配一个字符串值。最后,我想将 UserControl 实例添加到 MainPage 上的容器元素。
这就是我的 ActionUserControl 现在的样子:
<Grid x:Name="ActionGrid">
<TextBlock x:Name="ActionText" Grid.Row="0" Text="Name Goes Here" />
</Grid>
和代码隐藏
public sealed partial class ActionUserControl : UserControl
{
public string ActionName { get; set; }
public ActionUserControl()
{
this.InitializeComponent();
}
}
这就是我在 MainPage AddButton_Click 事件中所做的事情
private void AddButton_Click(object sender, PointerRoutedEventArgs e)
{
// ActionCount holds number of active Actions
ActionCount++;
// Create an instance of the user control, and assign name
ActionUserControl auc = new ActionUserControl();
auc.ActionName = "Action " + ActionCount;
// Add the user control to the container
this.ActionContainer.Children.Add(auc);
// Move the add button to the bottom of the container for consistency
int childrenCount = this.ActionContainer.Children.Count;
this.ActionContainer.Children.Move((uint)childrenCount - 1, (uint)childrenCount - 2);
}
我已经尝试在 UserControl 构造函数和 PageLoad 事件上分配 ActionText.Text = ActionName,但它们都将变为 null。我应该绑定 ActionText.Text 值而不是尝试从代码隐藏设置它吗?
你可以...
- 使您的 ActionName 成为依赖项 属性 并绑定到它。
- 在 ActionName 属性中更改用户控件上的文本块 setter。
还要考虑:为什么要在代码中创建用户控件?您可以将您的 a 操作(作为字符串)添加到列表中,并使用 DataTemplate 在 ListBox(或其他 ItemsControl)中显示它们。