Обязательный Silverlight UserControl пользовательские свойства к элементам it

Взято из: Видео HTML5 - программно показать / скрыть элементы управления



Toggle

17
задан Ronald Zarīts 8 April 2009 в 12:15
поделиться

4 ответа

Возможно, я не совсем понимаю вашу проблему. В 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 .

1
ответ дан 30 November 2019 в 12:44
поделиться

Я думаю, вы ищете UI Элемент для привязки элемента , который является функцией Silverlight 3.

2
ответ дан 30 November 2019 в 12:44
поделиться

Сначала установите 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;
}
19
ответ дан 30 November 2019 в 12:44
поделиться

Это работало в 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}"/>
0
ответ дан 30 November 2019 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: