への結合私はSongDescriptionというカスタムユーザーコントロールをしている: は、WPFユーザーコントロールのカスタムたDependencyProperty
<UserControl x:Class="DPTestAp.SongDescription" ...>
<Grid x:Name="LayoutRoot">
<DockPanel Height="50">
<TextBlock x:Name="title" Text="{Binding name}" Width="100" Height="30"/>
<TextBox x:Name="lyrics"/>
</DockPanel>
</Grid>
</UserControl>
は、私はそれにしたDependencyPropertyを追加しました:
public partial class SongDescription : UserControl
{
public static readonly DependencyProperty SongProperty = DependencyProperty.Register("Song", typeof(Song), typeof(SongDescription));
public Song Song
{
get
{
return (Song)GetValue(SongProperty);
}
set
{
SetValue(SongProperty, value);
updateLyrics()
}
}
private void updateLyrics()
{
lyrics.Text = Song.lyrics;
}
public SongDescription()
{
InitializeComponent();
}
}
質問です:どのようにこのSongPropertyに何かをバインドするには? は、私はこのような私のメインウィンドウでSongDescriptionを使用します。
<local:SongDescription x:Name="songDescription" Song="{Binding DataContext}"/>
私は私のTextBox 歌詞ショーの歌詞を作ることはできません。
songDescription.DataContext = new Song() { name="Home", lyrics="Hold on, to me as we go" };
またはこのようなウィンドウ自体へ:
DataContext = new Song() { name="Home", lyrics="Hold on, to me as we go" };
私も歌資源作ると、このようSongPropertyにバインドしようとしたメインウィンドウでは、私はこのように、songDescriptionへのDataContextを設定しようとしました:
<Window.Resources>
<local:Song x:Key="res" name="Home" lyrics="Hold on, to me as we go"/>
</Window.Resources>
<Grid>
<local:SongDescription x:Name="songDescription" Song="{StaticResource res}"/>
</Grid>
何も助けられませんでした。 TextBlock タイトルは、曲名を正しくバインドします。しかし、私はupdateLyrics()メソッドを呼び出させることはできません。 (実際の生活では、このメソッドはより複雑なので、名前のようにバインディングを使用することはできません)。
ありがとうございました!
ありがとう、マスター! –
ですが、 'PropertyChanged'コールバックです。共有関数なので、コントロールを更新することはできません! –