Tôi đang cố tạo trò chơi ô chữ đơn giản trong Silverlight 2.0. Tôi đang làm việc trên một thành phần UserControl-ish đại diện cho một hình vuông trong câu đố. Tôi đang gặp rắc rối với việc ràng buộc các thuộc tính của UserControl với các phần tử của nó. Cuối cùng tôi đã (loại) nhận được nó làm việc (có thể hữu ích cho một số - nó đã cho tôi một vài giờ dài), nhưng muốn làm cho nó thêm 'thanh lịch'.Gắn kết các thuộc tính tùy chỉnh của Silverlight UserControl với 'các thành phần
Tôi đã tưởng tượng nó phải có ngăn chứa nội dung và nhãn (ở góc trên bên phải) có tùy chọn chứa số 'của nó. Việc kiểm soát nội dung có thể là một TextBox, trong khi kiểm soát nhãn có thể là một TextBlock. Vì vậy, tôi đã tạo ra một usercontrol với cấu trúc cơ bản này (các giá trị được mã hóa ở giai đoạn này):
<UserControl x:Class="XWord.Square"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
FontSize="30"
Width="100" Height="100">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock x:Name="Label" Grid.Row="0" Grid.Column="1"
Text="7"/>
<TextBox x:Name="Content" Grid.Row="1" Grid.Column="0"
Text="A"
BorderThickness="0" />
</Grid>
</UserControl>
Tôi cũng đã tạo DependencyProperties trong lớp Quảng trường như thế này:
public static readonly DependencyProperty LabelTextProperty;
public static readonly DependencyProperty ContentCharacterProperty;
// ...(static constructor with property registration, .NET properties
// omitted for brevity)...
Bây giờ tôi muốn muốn tìm ra cách liên kết phần tử Nhãn và Nội dung với hai thuộc tính. Tôi làm như thế này (trong tập tin phía sau mã):
Label.SetBinding(TextBlock.TextProperty, new Binding { Source = this, Path = new PropertyPath("LabelText"), Mode = BindingMode.OneWay });
Content.SetBinding(TextBox.TextProperty, new Binding { Source = this, Path = new PropertyPath("ContentCharacter"), Mode = BindingMode.TwoWay });
Điều đó sẽ được thực hiện thanh lịch hơn trong XAML. Có ai biết làm thế nào được thực hiện?
Câu hỏi quan trọng như vậy chưa phải là một câu trả lời khó nắm bắt. –