Wpf 正在调用本地控件的构造函数,但未显示该控件
我正在学习WPF教程,学习如何在窗口上显示控件内容,但我未能按预期显示本地控件 这是我的MainWindow.xaml代码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
<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