从UserControl派生时刷新UI问题

时间:2015-09-21 11:27:02

标签: wpf xaml

我继承了UserControl来添加一些功能,而且效果很好。 MyUserControl在一个不同的项目中,我只是在主项目中使用它,问题是我随时打开xaml它将不会呈现,直到我进行更改和构建。之后布局会一直刷新,但是如果我关闭用户控件并重新打开它,除非我构建,否则它不会显示任何内容。 这是xaml

<cc:FormUserControl x:Class="Module.Options.Views.Accounting.Views.JournalFormView"
                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                   xmlns:cc="clr-namespace:Module.Common.Controls;assembly=Module.Common">
                               <TextBox Grid.Row="1" Text=”Some Text” />
</cc:FormUserControl>

这是c#

public class FormUserControl : UserControl, IView
{
    public FormUserControl()
    {
        SetValue(ViewModelLocator.AutoWireViewModelProperty, true);
    }

    public override void EndInit()
    {
        if (CanRefresh)
        {
            Resources.MergedDictionaries.Add(
            new ResourceDictionary().AddResource("/Resource.Dictionaries;component/Styles/MyControlStyle.xaml"));
            Style = FindResource("MyserControlStyle") as Style;
        }   
        base.EndInit();
    }

    public bool CanRefresh
    {
        get { return (bool)GetValue(CanRefreshProperty); }
        set { SetValue(CanRefreshProperty, value); }
    }

    public static readonly DependencyProperty CanRefreshProperty =
        DependencyProperty.Register("CanRefresh", typeof(bool), typeof(FormUserControl), new PropertyMetadata(false));
}

这段代码没有什么特别之处,我不知道为什么它在我做完之前不会刷新。这两个文件位于不同的项目中,xaml将在我添加空间和构建等任何更改时立即生效。 有任何想法吗?

亲切的问候

1 个答案:

答案 0 :(得分:1)

在对其他项目中的UserControl进行更改后,设计人员会发现它显示的UserControl 已过期。因此,您需要构建/重建解决方案,以便设计人员可以赶上并在设计器上显示最新的更改。

当您构建或运行解决方案时,事情应该没问题。