如何在Expression Blend 4中编辑CellTemplate

时间:2012-04-10 17:59:30

标签: c# wpf xaml wpfdatagrid expression-blend

这是关于在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代码来修复它?

1 个答案:

答案 0 :(得分:0)

我可能完全偏离基础,如果是这样,抱歉不理解,但似乎问题是过度复杂化所需要的。 CellTemplate只是一个占位符 - 在数据网格中它默认是空的,所以你可以把你想要的任何东西放在其中 - &gt;在你的情况下,它是TextBlock的占位符。这就是您需要在Blend中编辑的内容,或者您​​在CellTemplate中进行的任何其他控制。