我写了简单的 XAML 文件:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="250"
WindowStartupLocation="CenterScreen"
ResizeMode="NoResize" Title="Окошко" Width="250" Height="400">
<Grid>
<!--Настраиваем сетку-->
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--Теперь по сетке раскидываем контролы-->
<GroupBox x:Name="listTitle" x:FieldModifier="public" Header="Список элементов:" Margin="5"
Padding="5">
<!--В объекте ListBox указываем, что источником данных для элементов
списка следует использовать свойство DataContext родительского элемента-->
<ListBox x:Name="listbox" x:FieldModifier="public"
ItemsSource="{Binding}" SelectionMode="Multiple">
<!--Шаблон отображения элементов списка-->
<ListBox.ItemTemplate>
<DataTemplate>
<!--Указываем, что каждый элемент следует отображать
в виде текста, который должен считываться из свойства "Value"-->
<TextBlock Text="{Binding Path=Value}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</GroupBox>
<GroupBox Header="Примечание:" Grid.Row="1" Margin="5" Padding="5">
<TextBlock x:Name="txtNotes" x:FieldModifier="public" TextWrapping="Wrap"/>
</GroupBox>
<StackPanel Orientation="Horizontal" Grid.Row="2"
HorizontalAlignment="Right">
<Button x:Name="btnAccept" x:FieldModifier="public" Margin="5"
Padding="5" IsDefault="True">Принять</Button>
<Button x:Name="btnExit" x:FieldModifier="public" Margin="5"
Padding="5" IsCancel="True">Выход</Button>
</StackPanel>
</Grid>
</Window>
这是一个简单的窗口:
我在我的代码中解析这个:
using (io.FileStream fs = new io.FileStream(fileFullName, io.FileMode.Open)) {
depObj = XamlReader.Load(fs) as DependencyObject;
fs.Close();
}
它在 .NET 4.0 中运行良好,但在 .NET 3.5 SP1 中出现异常:
System.Windows.Markup.XamlParseException 发生消息=XML 命名空间“ http://schemas.microsoft.com/winfx/2006/xaml
” 中不存在属性“FieldModifier” 。行'17'位置'38'。
为什么会这样?