WPF:无法解析后面的代码中的符号

时间:2015-02-13 14:32:46

标签: c# wpf xaml

您好我正在尝试为我正在开发的项目学习一些WPF和C#。我意识到在工作了一段时间后我将使用几个相同的项目,我认为创建我自己的类以使其更容易使用是合适的。但是现在我无法像在窗口中执行此操作那样在后面的代码中引用XAML中定义的元素。我得到的错误是“无法在ContactPanel.xaml.cs中解析符号'ThaButton”:

using System.Windows.Controls; 

namespace WPF_OOM
{
    public partial class ContactPanel : ContentControl
    {
        public Contact Person { get; set; }
        public ContactPanel()
        {
            ThaButton.Content = "test";
        }
    }
}

我的ContactPanel.xaml

<UserControl x:Class="WPF_OOM.ContactPanel:UserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DockPanel x:Name="dp">
        <TextBlock x:Name="NameTextBlock" Text="testtesttest" DockPanel.Dock="Left"></TextBlock>
        <Button x:Name="ThaButton" Content="button" DockPanel.Dock="Right"></Button>
    </DockPanel>
</UserControl>

希望我已经很好地解释了我的问题。我可能对这个问题采取了错误的方法,让我知道是否有更好的方法。

干杯

1 个答案:

答案 0 :(得分:0)

x中移除:UserControl :Class =&#34; WPF_OOM.ContactPanel:UserControl&#34; 所以它看起来像 x:Class =&# 34; WPF_OOM.ContactPanel&#34;

同样在你的代码背后,你有ContactPanel继承表单ContentControl,但在你的xaml中,它继承自UserControl。这些基类必须匹配。因此,将它们更改为UserControl或ContentControl

看起来您创建了一个单独的.cs文件?我建议使用xaml文件生成的代码。一种方法是在xaml编辑器中右键单击并选择“查看代码”。如果您导入了xaml和.cs文件,那么重新加载项目或重新启动visual studio应该在解决方案资源管理器中再次组合它们(如果它们还没有)。

我建议查看Model-View-ViewModel或MVVM模式。 WPF的效果相当不错;)

希望这有助于您入门。