我的问题是,我有一个名为UC的配置文件,其中包含另一个名为FollowImageControl的UC。
在我的Profile.xaml中,我声明性地将一个名为FollowerId的FollowImageControl属性绑定到Profile.xaml.cs中的CurrentUserId。问题是我在Profile.xaml.cs中分配了CurrentUserId; Profile.xaml代码隐藏。
这意味着我最初没有得到FollowerId。我在 FollowImageControl.xaml.cs :
中有这些方法 public static readonly DependencyProperty _followUserId =
DependencyProperty.Register("FollowUserId", typeof(Guid), typeof(FollowImageControl), null);
public Guid FollowUserId
{
get { return (Guid)GetValue(_followUserId); }
set { SetValue(_followUserId, value); }
}
public FollowImageControl()
{
// Required to initialize variables
InitializeComponent();
LoggedInUserId = WebContext.Current.User.UserId;
var ctx = new NotesDomainContext();
if (ctx.IsFollowingUser(LoggedInUserId, FollowUserId).Value) SwitchToDelete.Begin();
}
private void AddImg_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (LoggedInUserId != FollowUserId)
{
var ctx = new NotesDomainContext();
ctx.FollowUser(FollowUserId, LoggedInUserId);
ctx.SubmitChanges();
}
}
WEIRD THING 当我插入断点时,FollowImageControl()中的FollowerUserId为0,但它在AddImg_MouseLeftButtonDown中有一个值,并且没有设置其值的中间逻辑。这是怎么回事?
这里有更多代码信息:
这是我对 profile.xaml
的约束<internalCtrl:FollowImageControl FollowUserId="{Binding ElementName=ProfileCtrl, Path=CurrentUserId}" />
这是我在 profile.xaml.cs 中的构造函数,其中设置了CurrentUserId public static readonly DependencyProperty _CurrentUserId =
DependencyProperty.Register("CurrentUserId", typeof(Guid), typeof(Profile), null);
public Guid CurrentUserId
{
get { return (Guid)GetValue(_CurrentUserId); }
set { SetValue(_CurrentUserId, value); }
}
public Profile(Guid UserId) {
CurrentUserId = UserId;
InitializeComponent();
Loaded += new RoutedEventHandler(Profile_Loaded);
}
我非常沮丧地说,一分钟后,FollowerId没有任何价值,而下一个它是正确的,没有我改变了代码隐藏的价值。
答案 0 :(得分:0)
您在FollowImageControl
构造函数中设置了断点的位置?如果您在调用InitializeComponent()
之前设置了它,则这是正常行为,因为InitializeComponent()
执行所有XAML。这意味着,您的绑定也是在此方法中创建的,因此在调用InitializeComponent()
之后应该有一个值,而不是之前。当然,在构造函数完成后调用AddImg_MouseLeftButtonDown
,因此也调用了InitializeComponent()
。