Tôi đã một usercontrol tùy chỉnh được gọi SongDescription:WPF Binding để UserControl Tuỳ chỉnh 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>
tôi đã thêm thuộc tính phụ thuộc với nó:
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();
}
}
Câu hỏi đặt ra là: làm thế nào để ràng buộc một cái gì đó để SongProperty này? tôi sử dụng SongDescription trong cửa sổ chính của tôi như thế này:
<local:SongDescription x:Name="songDescription" Song="{Binding DataContext}"/>
tôi không thể làm cho TextBox tôi lyrics chương lời bài hát. Trong cửa sổ chính tôi đã cố gắng để thiết lập DataContext để songDescription, như thế này:
songDescription.DataContext = new Song() { name="Home", lyrics="Hold on, to me as we go" };
hoặc để bản thân cửa sổ như thế này:
DataContext = new Song() { name="Home", lyrics="Hold on, to me as we go" };
Tôi thậm chí đã cố gắng để làm cho Sông một nguồn lực và ràng buộc nó vào SongProperty như thế này :
<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>
Không có gì hữu ích. TextBlock title liên kết tên bài hát tốt. Nhưng tôi không thể gọi phương thức updateLyrics(). (Trong cuộc sống thực, phương pháp này phức tạp hơn, vì vậy tôi không thể sử dụng Binding như tên).
Cảm ơn bạn!
Cảm ơn bạn! –
nhưng sau đó, là 'PropertyChanged' gọi lại, tôi sẽ không thể cập nhật bất kỳ điều khiển, bởi vì nó là một chức năng chia sẻ! –