WPF派生的UserControl无法在Visual Studio中打开(但运行)

时间:2018-06-13 17:57:10

标签: c# wpf

我想在MVVM模式之后开发一个UserControl,所以我创建了一个包含所有功能的ViewModel类。然后我意识到UserControl中的所有代码都是为了公开ViewModel的命令,属性和事件,所以我想我也可以将ViewModel作为从UserControl派生自己的基类。

所以我有类似的东西

private AdapterInterface adapterInterfaceListener;

基类看起来像这样

<local:MediaPlayerUIViewModel x:Class="EmergenceGuardian.MediaPlayerUI.MediaPlayerUI"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:EmergenceGuardian.MediaPlayerUI"
             mc:Ignorable="d" Height="46" Width="800" x:Name="UI">
    <local:MediaPlayerUIViewModel.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MediaPlayerUI;component/Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <local:TimeSpanToDoubleConverter x:Key="TimeSpanToDoubleConverter"/>
            <local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
        </ResourceDictionary>
    </local:MediaPlayerUIViewModel.Resources>
    ...

现在, Visual Studio拒绝在设计器中加载UserControl。它表示成员资源,高度和宽度无法识别或无法访问。

但是,它在Blend中加载并运行正常。只是Visual Studio设计师不喜欢它。有什么方法可以解决这个问题吗?

编辑:有时休息一下,稍后回来解决问题。关闭Visual Studio并重新打开它修复了问题!!

1 个答案:

答案 0 :(得分:-1)

我认为你应该改变这个:

~/.ssh/config

<local:MediaPlayerUIViewModel x:Class="EmergenceGuardian.MediaPlayerUI.MediaPlayerUI"

&#34;本地&#34;标识符在正文内部声明:

<UserControl x:Class="EmergenceGuardian.MediaPlayerUI.MediaPlayerUI" ...

你也可以改变: xmlns:local="clr-namespace:EmergenceGuardian.MediaPlayerUI" 只是<local:MediaPlayerUIViewModel.Resources>

您的实际代码: <Resources>

仍然可以保持不变,一切都会有效。