2012-04-10 3 views
0

Вот то, что я не понимаю, о редактировании шаблонов ячеек в Expression Blend 4:Как редактировать CellTemplate в Expression Blend 4

При создании шаблона ячейки вручную через XAML, код выглядит следующим образом:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:leartWPF" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" 
    x:Class="leartWPF.Window1" 
    x:Name="Window" 
    Title="Window1" 
    Width="640" Height="480"> 
    <Window.Resources> 
     <local:GroupDataSource x:Key="GroupDataSourceDataSource" d:IsDataSource="True"/> 

    </Window.Resources> 

    <Grid x:Name="LayoutRoot" Margin="0" DataContext="{Binding Source={StaticResource GroupDataSourceDataSource}}"> 
     <DataGrid Margin="0" HeadersVisibility="None" ItemsSource="{Binding GroupExtednenDatas, ElementName=Window}" AutoGenerateColumns="False" RowHeight="25" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" CanUserAddRows="False" > 
      <DataGrid.Columns> 
       <DataGridTemplateColumn Header="Groups" Width="Auto" IsReadOnly="True" > 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Name}" Width="200"></TextBlock> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid>  
    </Grid> 
</Window> 

Какие результаты в окне, который выглядит более или менее хорошо:

enter image description here

Когда я пытаюсь сделать то же самое с помощью меню Expression Blend в,

enter image description here

Я в конечном итоге с помощью следующего кода:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:leartWPF" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" 
    x:Class="leartWPF.Window1" 
    x:Name="Window" 
    Title="Window1" 
    Width="640" Height="480"> 
    <Window.Resources> 
     <local:GroupDataSource x:Key="GroupDataSourceDataSource" d:IsDataSource="True"/> 
     <DataTemplate x:Key="MyDataTemplate"> 
      <TextBlock Text="{Binding Name}" Width="200"></TextBlock> 
     </DataTemplate> 

    </Window.Resources> 

    <Grid x:Name="LayoutRoot" Margin="0" DataContext="{Binding Source={StaticResource GroupDataSourceDataSource}}"> 
     <DataGrid Margin="0" HeadersVisibility="None" ItemsSource="{Binding GroupExtednenDatas, ElementName=Window}" AutoGenerateColumns="False" RowHeight="25" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" CanUserAddRows="False" > 
      <DataGrid.Columns> 
       <DataGridTemplateColumn Header="Groups" Width="Auto" IsReadOnly="True" CellTemplate="{DynamicResource MyDataTemplate}" > 

       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid>  
    </Grid> 
</Window> 

который отображает пустые ячейки независимо от того, что я положил внутри

<DataTemplate x:Key="MyDataTemplate"> : 

enter image description here

Я делаю что-то не так, или это ошибка Expression Blend? И если это ошибка, как мне изменить код XAML, чтобы исправить это?

+0

Насколько я вижу, они отличаются только тем, как объявляется шаблон: встроенный в первый, в ресурсе последний. Вы уверены, что используете один и тот же код? Постскриптум Опечатка нужна в 'DataGrid' ItemsSource? –

+0

Я действительно переделал это несколько раз. Кроме того, я просто заменил DynamicResource на StaticResource, и он снова работает. Кажется, проблема связана, в частности, с DynamicResource здесь –

ответ

0

Возможно, я был полностью вне базы, если это так, извините за непонимание, но, похоже, вопрос чрезмерно усложняет то, что необходимо. CellTemplate - всего лишь местозаполнитель для чего-либо - в сетке данных он по умолчанию пуст, поэтому вы можете поместить в него все, что хотите -> в вашем случае это местозаполнитель для TextBlock. Это то, что вам нужно будет отредактировать в Blend или любом другом элементе управления, который вы кладете в CellTemplate.

+0

Я сузил проблему, ссылаясь на шаблон с неработающим DynamicResource. Проблема корректно работает со ссылкой как StaticResource. –

+0

ах, круто, это имеет смысл. –

Смежные вопросы