Как добавить функциональность .CS к классам XAML, созданным в Expression Design для приложения Silverlight?

Как добавить функциональность .CS к классам XAML, созданным в Expression Design?

У меня есть проект Silverlight, переданный мне дизайнерами, который, похоже, еще не имеет большой функциональности. Одна из первых вещей, которые я заметил, - это то, что, похоже, нет никаких соответствующих файлов .cs, которые совпадают с тем, что кажется дочерними для «LayoutRoot». Я имею в виду, как это показано в Expression Blend, это дочерние узлы на вкладке «Объекты и временная шкала» в «LayoutRoot».

При просмотре в Visual Studio 8 они кажутся дочерними узлами класса Page.xaml. Разве не первым шагом должно быть создание некоторых файлов или классов .cs для обработки функциональных возможностей этих сеток? Я выполнил поиск по имени первой дочерней сетки и не получил никаких результатов ни в одном из существующих файлов .cs. Как мне сгенерировать файлы .cs?


person xarzu    schedule 28.06.2010    source источник


Ответы (2)


Сетка обычно используется как контейнерный элемент управления для всей страницы. Обычно вы не имеете дело с этим напрямую. Если у вас есть элементы управления в сетке, вы имеете дело с этими элементами управления. Дайте им имена (например, .. x: Name = "someName"), а затем обработайте события для этих элементов управления. Это почти так же, как WinForms в отношении элементов управления и обработки событий.

Например, вот какой-то XAML из проекта WPF (я знаю, что это не Silverlight, но в основном то же самое)

  <Grid x:Name="LayoutRoot">
     <Canvas 
          x:Name="canvas1" 
          Height="100" 
          HorizontalAlignment="Left" 
          Margin="116,62,0,0" 
          VerticalAlignment="Top" 
          Width="200">

      </Canvas>

      <Button 
          x:Name="btnGetChildren" 
          Content="Get Children" 
          Height="23" 
          Margin="174,209,218,47" 
          Width="75" 
          Click="btnGetChildren_Click" />
  </Grid>

Обратите внимание, что у меня есть холст и кнопка «внутри» сетки. Обратите внимание, что у кнопки есть событие Click, которое я обрабатываю. Код для этого события щелчка находится в файле «xaml.cs» для страницы.

private void btnGetChildren_Click(object sender, RoutedEventArgs e)
{
    foreach (UIElement element in canvas1.Children)
    {
        // some code
    }
}
person Ryan Alford    schedule 01.07.2010

Файлы XAML и xaml.cs являются частичными классами, поэтому компоненты на странице являются свойствами класса, даже если вы не видите их в коде, стоящем за файлом .cs. Чтобы увидеть это в действии, создайте метод и в теле метода начните вводить имя объекта, и вы увидите, что оно появится в intellisense.

Другой способ - справиться с этим с поверхности дизайна. В окне свойств переключитесь на «события». Найдите событие, которое вы хотите выполнить, и введите имя метода в соответствующем поле. Когда вы нажмете «Enter», VS подключит метод к событию и сразу перейдет к методу обработчика, который вы только что создали.

person Doobi    schedule 02.07.2010