1

この XAML は、ランタイム エラーなしでコンパイルおよび実行されます。

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:Custom="http://schemas.microsoft.com/wpf/2008/toolkit" x:Class="WpfApplication1.Window1"
    Title="Window1" Height="300" Width="300" mc:Ignorable="d">
    <StackPanel Orientation="Vertical" d:LayoutOverrides="Height" DataContext="{Binding Source={StaticResource booksDataSource}}">
        <Custom:DataGrid ItemsSource="{Binding Mode=Default, XPath=/catalog/book}" AutoGenerateColumns="False">
            <Custom:DataGrid.Resources>
                <ControlTemplate x:Key="TemplateLoverBirds">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Great book!" />
                        <TextBlock x:Name="textBlock" Text="{Binding Mode=Default, XPath=title}" />
                    </StackPanel>
            </ControlTemplate>
            </Custom:DataGrid.Resources>
            <Custom:DataGrid.Columns>
                <Custom:DataGridTextColumn Binding="{Binding Mode=Default, XPath=author}"/>
                <Custom:DataGridTemplateColumn>
                    <Custom:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Control x:Name="TitleControl">
                                <Control.Template>
                                    <ControlTemplate TargetType="{x:Type Control}">
                                        <TextBlock Text="{Binding Mode=Default, XPath=title}" />
                                    </ControlTemplate>
                                </Control.Template>
                            </Control>
                            <DataTemplate.Triggers>
                                <DataTrigger Binding="{Binding XPath=title}" Value="Lover Birds">
                                    <Setter TargetName="TitleControl" Property="Template" Value="{StaticResource TemplateLoverBirds}" />
                                </DataTrigger>
                            </DataTemplate.Triggers>
                        </DataTemplate>
                    </Custom:DataGridTemplateColumn.CellTemplate>
                </Custom:DataGridTemplateColumn>
            </Custom:DataGrid.Columns>
        </Custom:DataGrid>
    </StackPanel>
</Window>

しかし、Blend での設計時には、これは無効な XAML としてマークされます。また、Visual Studio の設計時には、「読み込みがキャンセルされました」画面が表示されます (ただし、Resume loading the designerをクリックすると正しく読み込まれます)。

4

2 に答える 2

1

了解しました。次のように問題を修正しました。

変化する:

xmlns:Custom="http://schemas.microsoft.com/wpf/2008/toolkit

に:

xmlns:Custom="clr-namespace:Microsoft.Windows.Controls;assembly=WpfToolkit"

WpfToolkitの適切なバージョンがあることを確認してください。ツールキットを参照すると、ツールキットを使用できます。

于 2009-12-24T02:28:03.753 に答える
1

Blend は WPF のサブセットのみをサポートします。EventSetters もブレンドを殺すことに気付きました。私はあなたと同じ問題を抱えています。正常に動作するウィンドウがたくさんありますが、奇妙な理由でブレンドで表示できません。

Expression Blend 2 のウィンドウを開く失敗を診断するための戦略

Custom:DataGrid がサポートされていない可能性があると思います。わかりません、ただ推測するだけです。ウィンドウがインスタンス化されて正常に実行される場合、ブレンドにバグがあると思います。

于 2009-12-24T02:07:50.750 に答える