UserControlに依存プロパティで値を渡す
WPFでUserControlで自前のコントロールを作成する際に、UserControl側に依存プロパティで値を渡す方法です。
目次
- UserControlのコード
- 呼び出し元(MainWindow)のコード
- 実行結果
UserControlのコード
以下は、UserControlにTextBoxとCheckBoxを配置して、TextBoxの内容を依存プロパティで渡した値で表示するコードになります。
◆UserControl1.xaml
<UserControl x:Class="WpfApp1.UserControl1"
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"
mc:Ignorable="d"
d:DesignHeight="30" d:DesignWidth="200"
Loaded="UserControl1_Loaded">
<Canvas>
<TextBox Name="TextBox01" Canvas.Top="5" Canvas.Left="5" Width="150" Height="20"/>
<CheckBox Name="CheckBox01" Canvas.Top="7" Canvas.Left="170"/>
</Canvas>
</UserControl>
◆UserControl1.cs
using System.Windows;
using System.Windows.Controls;
namespace WpfApp1
{
public partial class UserControl1 : UserControl
{
public string DefaultText
{
get { return (string)GetValue(DefaultTextProperty); }
set { SetValue(DefaultTextProperty, value); }
}
public static readonly DependencyProperty DefaultTextProperty =
DependencyProperty.Register(
"DefaultText",
typeof(string),
typeof(UserControl1),
new PropertyMetadata(string.Empty));
public UserControl1()
{
InitializeComponent();
}
public void UserControl1_Loaded(object sender, RoutedEventArgs e)
{
TextBox01.Text = DefaultText;
}
}
}
呼び出し元(MainWindow)のコード
UserControlに用意した依存プロパティを使って、値を渡す方法は以下の通りです。
◆MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
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:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="600">
<Canvas>
<local:UserControl1 DefaultText="あいうえお"/>
</Canvas>
</Window>