ウィンドウにコントロールコンテンツを表示する方法についてWPFチュートリアルhereに従っていますが、意図したとおりにローカルコントロールを表示できません。ローカルコントロールのコンストラクタが呼び出されていますが、コントロールが表示されません。
はここに私の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();
}
}
}
だとここで私のローカル制御(XamlFileBrowser.xaml)コード
<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;
}
}
}
私はpublic XAMLFileBrowser()
コンストラクタクラスに侵入し、nameTextBox
の値をチェックすることができます、しかし、私はちょうどそれが表示するようにコントロールを得ることができません:
代わりに、私は空のMainWindow画面を持っています。
何らかの理由がありますか?
正確な問題は、MainWindowがローカル:XAMLFileBrowserコントロールをロードしていないことです。それとも、コンテンツが正しく読み込まれていないのですか? –
@NahuelIanni、私は分かりません - 私は空白のMainWindow UI – Graviton