Взято из: Видео HTML5 - программно показать / скрыть элементы управления
Toggle
Возможно, я не совсем понимаю вашу проблему. В Silverlight вы можете привязать практически к любому объекту данных. Итак, если у вас есть класс PuzzleSquare, который содержит свойства Content и Label, вы можете связать эти свойства непосредственно из объекта.
Допустим, вы создали простой объект PuzzleSquare:
public class PuzzleSquare
{
public string Content{ get; set; }
public string Label{ get; set; }
public void PuzzleSquare(){};
public void PuzzleSquare(string label, string content):this()
{
Content = content;
Label = label;
}
}
Итак, если вы создаете приложение с помощью В классическом представлении / модели кода позади, ваш код позади будет добавлять этот объект в свойство DataContext сетки при загрузке страницы:
LayoutRoot.DataContext = new PuzzleSquare("1", "A");
Ваш Xaml будет привязываться к свойству Square:
<TextBlock x:Name="Label" Grid.Row="0" Grid.Column="1"
Text="{Binding Label}"/>
<TextBox x:Name="Content" Grid.Row="1" Grid.Column="0"
Text="{Binding Content}" BorderThickness="0" />
Это имеет смысл?
ib .
Я думаю, вы ищете UI Элемент для привязки элемента , который является функцией Silverlight 3.
Сначала установите DataContext в UserControl с помощью {RelativeSource Self}:
<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"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
Теперь вы можете привязать отдельные элементы к свойствам usercontrol:
<TextBlock x:Name="Label" Grid.Row="0" Grid.Column="1"
Text="{Binding LabelText}"/>
<TextBox x:Name="Content" Grid.Row="1" Grid.Column="0"
Text="{Binding ContentCharacter}" BorderThickness="0" />
Для SL 2.0 вам необходимо установить DataContext в обработчике событий UserControl Loaded.
private void UserControl_Loaded( object sender, RoutedEventArgs e ) {
LayoutRoot.DataContext = this;
}
Это работало в Silverlight 4.0
Поместите имя в UserControl, а затем обратитесь к нему в TextBlock
<UserControl x:Class="XWord.Square"
...omitted for brevity ...
x:Name="Square">
<TextBlock x:Name="Label" ...
Text="{Binding Path=LabelText,ElementName=Square}"/>