Как добавить функциональность .CS в классы XAML, встроенные в Expression Design для приложения Silverlight? - PullRequest
0 голосов
/ 28 июня 2010

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

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

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

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

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

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

0 голосов
/ 01 июля 2010

Сетка обычно используется в качестве элемента управления контейнером для всей страницы. Вы обычно не имеете дело с этим напрямую. Если у вас есть элементы управления в сетке, вы имеете дело с этими элементами управления. Дайте им имена (т.е. .. 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
    }
}
...