Wpf 正在调用本地控件的构造函数,但未显示该控件

Wpf 正在调用本地控件的构造函数,但未显示该控件,wpf,xaml,Wpf,Xaml,我正在学习WPF教程,学习如何在窗口上显示控件内容,但我未能按预期显示本地控件 这是我的MainWindow.xaml代码 <Window x:Class="McXamlLib.MainWindow" x:Name="Window" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/w

我正在学习WPF教程,学习如何在窗口上显示控件内容,但我未能按预期显示本地控件

这是我的MainWindow.xaml代码

<Window x:Class="McXamlLib.MainWindow"
        x:Name="Window"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:McXamlLib"
        mc:Ignorable="d"
        Title="MainWindow" Height="565" Width="310">

    <Grid x:Name="LayoutRoot">
        <local:XAMLFileBrowser />
    </Grid>
</Window>

namespace McXamlLib
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}
<UserControl x:Class="McXamlLib.XAMLFileBrowser"
             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:McXamlLib"
             mc:Ignorable="d" 

             x:Name="XAMLFileBrowserControl"
             d:DesignHeight="39" d:DesignWidth="397">


    <Grid x:Name="LayoutRoot" Height="42" Width="504">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0.352"></ColumnDefinition>
            <ColumnDefinition Width="0.648"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <TextBox x:Name="FBCTextBox" Margin="4,10.313,137, 4.001" Text ="TextBox"
                   TextWrapping="Wrap" Grid.ColumnSpan="2" TextChanged="FCTextBox_TextChanged" />

        <Button x:Name="FBCButton" HorizontalAlignment="Right" Margin="0,8,13,4" Width="111" Content="Browse" Grid.Column="1"
                Click="FBCButton_Click" />


    </Grid>
</UserControl>
namespace McXamlLib
{
    /// <summary>
    /// Interaction logic for UserControl1.xaml
    /// </summary>
    public partial class XAMLFileBrowser : UserControl
    {
        public XAMLFileBrowser()
        {
            InitializeComponent();
            var nameTextBox = FBCTextBox.Name;
        }


        public string FileName
        {
            get { return FBCTextBox.Text; }
            set { FBCTextBox.Text = value; }
        }

        public event EventHandler<EventArgs> FileNameChanged;

        private void FCTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            e.Handled = true;
            if (FileNameChanged != null)
                FileNameChanged(this, EventArgs.Empty);
        }

        private void FBCButton_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog openFileDlg = new Microsoft.Win32.OpenFileDialog();
            if (openFileDlg.ShowDialog() == true)
                this.FileName = openFileDlg.FileName;
        }
    }
}

名称空间McXamlLib
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
}
}
这是我的本地控件(XamlFileBrowser.xaml)代码


名称空间McXamlLib
{
/// 
///UserControl1.xaml的交互逻辑
/// 
公共部分类XAMLFileBrowser:UserControl
{
公共XAMLFileBrowser()
{
初始化组件();
var nameTextBox=FBCTextBox.Name;
}
公共字符串文件名
{
获取{return FBCTextBox.Text;}
设置{FBCTextBox.Text=value;}
}
公共事件事件处理程序文件名已更改;
私有void FCTextBox\u TextChanged(对象发送者,textchangedventargs e)
{
e、 已处理=正确;
if(FileNameChanged!=null)
FileNameChanged(此为EventArgs.Empty);
}
私有无效FBC按钮单击(对象发送器,路由目标e)
{
Microsoft.Win32.OpenFileDialog openFileDlg=新建Microsoft.Win32.OpenFileDialog();
if(openFileDlg.ShowDialog()==true)
this.FileName=openFileDlg.FileName;
}
}
}
我可以进入
公共XAMLFileBrowser()
构造函数类,并检查
名称文本框的值,但我无法让控件按应有的方式显示:

相反,我得到了一个空白的主窗口屏幕


有什么原因吗?

您在
XAMLFileBrowser
中将网格的列设置为宽度小于一个像素,这样网格中的任何内容(文本框和按钮)都会折叠到一个像素下而不可见。
对于开始,完全删除
Width
值,您将看到控件。然后调整它们,直到得到您想要的内容。

列的宽度设置为像素,因此占用的空间非常小

如果您将其修改为百分比,我认为这是您的意图,它正确地显示:

<ColumnDefinition Width="0.3*"></ColumnDefinition>
<ColumnDefinition Width="0.7*"></ColumnDefinition>


您可以检查比例单位和布局在XAML中的工作方式。

所以确切的问题是主窗口没有加载local:XAMLFileBrowser控件?或者它没有正确加载内容?@Nahueliani,我不知道——我得到的只是一个空白的主窗口UI