ユーザーコントロールがあります。
xaml
<UserControl x:Class="controlmaker.checkButton"
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="114" d:DesignWidth="221">
<Grid Background="Aqua" >
<CheckBox Content="CheckBox" Height="16" HorizontalAlignment="Left" Margin="58,24,0,0" Name="checkBox1" VerticalAlignment="Top" />
<Button Content="{Binding buttText}" Height="23" HorizontalAlignment="Left" Margin="58,57,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
</UserControl>
コードビハインド
public partial class checkButton : UserControl
{
public checkButton()
{
InitializeComponent();
}
public static readonly DependencyProperty buttTextProperty =
DependencyProperty.Register("buttText", typeof(String),
typeof(checkButton), new FrameworkPropertyMetadata(string.Empty));
public String buttText
{
get { return GetValue(buttTextProperty).ToString(); }
set { SetValue(buttTextProperty, value); }
}
}
およびメインウィンドウxaml
<Window x:Class="controlmaker.MainWindow"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:controlmaker">
<Grid>
<my:checkButton buttText="aka" HorizontalAlignment="Left" Margin="145,115,0,0" x:Name="checkButton1" VerticalAlignment="Top" Height="133" Width="250" />
</Grid>
</Window>
ウィンドウxamlのユーザーコントロールプロパティをバインドし、ユーザーコントロールのボタンコンテンツプロパティにバインドします。どうやってするの?
ユーザーコントロール内でElementバインディングを試すことができます。 UserControlに名前を付けてプロパティをバインドするだけです:
<UserControl x:Class="controlmaker.checkButton"
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="114" d:DesignWidth="221"
x:Name="MyUserControl">
<Grid Background="Aqua" >
<CheckBox Content="CheckBox" Height="16" HorizontalAlignment="Left"
Margin="58,24,0,0" Name="checkBox1" VerticalAlignment="Top" />
<Button Content="{Binding Path=buttText, ElementName=MyUserControl}"
Height="23" HorizontalAlignment="Left" Margin="58,57,0,0"
Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
</UserControl>
そして、ユーザーコントロールの使用場所から静的テキストをバインドまたは配置できます。
<my:checkButton buttText="aka" />
または
<my:checkButton buttText="{Binding SomeProperty}" />