gpt4 book ai didi

c# - 如何分配在 xaml 中充当占位符的基类的属性?

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:45 24 4
gpt4 key购买 nike

我的控件有一个基类,因此从该基类派生的所有控件都将引发相同的事件

public class TradeEnterControl: UserControl
{
TradeData masterTrade;
public TradeData MasterTrade
{
get
{
return masterTrade;
}
set
{
masterTrade = value;
}
}
public delegate void TradeUpdateRoutedEventHandler(object sender, EventArgs e);
public static readonly RoutedEvent TradeUpdateEvent;
static TradeEnterControl()
{
TradeUpdateEvent = EventManager.RegisterRoutedEvent("TradeUpdate", RoutingStrategy.Bubble,
typeof(TradeUpdateRoutedEventHandler), typeof(TradeEnterControl));
}
#region Trade Update Event
public event TradeUpdateRoutedEventHandler TradeUpdate
{
add
{
base.AddHandler(TradeUpdateEvent, value);
}
remove
{
base.RemoveHandler(TradeUpdateEvent, value);
}
}

#endregion

public void RaiseTradeUpdateEvent()
{
RaiseEvent(new RoutedEventArgs(TradeUpdateEvent));
}
}

所以我的控件会继承TradeEnterControl

public partial class CollRepoTradeEnterControl : TradeEnterControl

我没有重新定义 MasterTrade 属性。

在我的 XAML 中,我将 TradeEnterControl 作为占位符,就像这样

<my:TradeEnterControl Grid.Column="0" Grid.Row="1" Margin="3,3,3,3" HorizontalAlignment="Stretch" x:Name="TradeEnterControl"  VerticalAlignment="Stretch" TradeUpdate="TradeEnterControl_TradeUpdate" />

在运行时,我将 TradeEnterControl 指定为,

TradeEnterControl.Content = new CollRepoTradeEnterControl();

当我更新 CollRepoTradeEnterControl 中的 MasterTrade 属性时,TradeEnterControl 中的 MasterTrade 属性保持为 null。我不确定为什么,是因为我将其分配为 TradeEnterControl.Content = new CollRepoTradeEnterControl(); 的方式吗?我如何确保在分配 CollRepoTradeEnterControl MasterTrade 属性时,TradeEnterControl 中的 MasterTrade 属性也被分配?

附加:当我在这里设置断点时:

    private void TradeEnterControl_TradeUpdate(object sender, EventArgs e)
{
SplitTradeControl.SplitEntryGroup.MasterTrade = ((TradeEnterControl)sender).MasterTrade;
}

我发现,作为 TradeEnterControl MasterTrade 属性的 sendernull enter image description here

但隐藏在树的深处,我可以看到 MasterTrade 属性已分配,

enter image description here

最佳答案

也许我弄错了,但是 - 您是否将该 UserControl 的 Content 设置为 CollRepoTradeEnterControl,而不是设置 UserControl 本身?如果是这样 - 那么,是的,您没有设置您认为的属性。元素的内容和元素是两个不同的东西。如果您想要将一个新对象分配给 那个 UserControl,那么您可以给它一个名称,这样该元素将作为该名称的实例成员对您的代码隐藏类可用。但是,这很困惑而且有问题。更好的方法是让可绑定(bind)属性引用此类的对象。不要试图将某些东西分配给您的 XAML 定义的对象,而是将其分配给您的 View 模型属性并让 WPF 完成它。另外,不要忘记 - 对于需要记住它们是什么并指向正确代码的属性,请考虑是否需要将其定义为虚拟。

关于c# - 如何分配在 xaml 中充当占位符的基类的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com