如何解决XAML绑定数据
如果我是XAML的新手。我尝试从C#对象绑定数据。问题在于ListView具有正确的组,但是没有任何项目。我尝试操纵XPath,但似乎无法正常工作。我已经花了很多时间在此上,却不知道如何使其工作。有人可以帮忙吗?
XML:
<Fasteners xmlns="">
<Fastener
Type="Anchor Rods"
TypeImage= "C:\TEMP\Images\Anchor Rods.png"
Manufacturer = "Hilti"
ManufacturerImage ="C:\TEMP\Images\Hilti.png"
Product = "Hilti HAS-U 8.8"
ProductImage="C:\TEMP\Images\Hilti.png"
>
<Item Name="Hilti HAS-U 8.8 M8x110" BlockName="Hilti HAS-U 8.8 M8x110" ItemImage="hilti"></Item>
<Item Name="Hilti HAS-U 8.8 M8x150" BlockName="Hilti HAS-U 8.8 M8x150" ItemImage="HiltiHASU"></Item>
<Item Name="Hilti HAS-U 8.8 M8x160" BlockName="Hilti HAS-U 8.8 M8x150" ItemImage="HiltiHASU"></Item>
</Fastener>
<Fastener
Type="Anchor Rods"
TypeImage= "C:\TEMP\Images\Anchor Rods.png"
Manufacturer = "J-FiX"
ManufacturerImage ="C:\TEMP\Images\Hilti.png"
Product = "J-FiX Stud 8.8"
ProductImage="C:\TEMP\Images\Hilti.png"
>
<Item Name="J-FiX Stud 8.8 M8x110" BlockName="Hilti HAS-U 8.8 M8x110" ItemImage="HiltiHASU"></Item>
<Item Name="J-FiX Stud 8.8 M8x150" BlockName="Hilti HAS-U 8.8 M8x150" ItemImage="HiltiHASU"></Item>
<Item Name="J-FiX Stud 8.8 M8x160" BlockName="Hilti HAS-U 8.8 M8x150" ItemImage="HiltiHASU"></Item>
</Fastener>
</Fasteners>
C#对象:
[XmlRoot(ElementName = "Item")]
public class Item
{
[XmlAttribute(AttributeName = "Name")]
public string Name { get; set; }
[XmlAttribute(AttributeName = "BlockName")]
public string BlockName { get; set; }
[XmlAttribute(AttributeName = "ItemImage")]
public string ItemImage { get; set; }
}
[XmlRoot(ElementName = "Fastener")]
public class Fastener
{
[XmlElement(ElementName = "Item")]
public List<Item> Item { get; set; }
[XmlAttribute(AttributeName = "Type")]
public string Type { get; set; }
[XmlAttribute(AttributeName = "TypeImage")]
public string TypeImage { get; set; }
[XmlAttribute(AttributeName = "Manufacturer")]
public string Manufacturer { get; set; }
[XmlAttribute(AttributeName = "ManufacturerImage")]
public string ManufacturerImage { get; set; }
[XmlAttribute(AttributeName = "Product")]
public string Product { get; set; }
[XmlAttribute(AttributeName = "ProductImage")]
public string ProductImage { get; set; }
}
[XmlRoot(ElementName = "Fasteners")]
public class Fasteners
{
[XmlElement(ElementName = "Fastener")]
public List<Fastener> Fastener { get; set; }
[XmlAttribute(AttributeName = "xmlns")]
public string Xmlns { get; set; }
}
CS:
public FastenersDialog()
{
InitializeComponent();
Fasteners fasteners = null;
string path = @"C:\TEMP\Fasteners.xml";
XmlSerializer serializer = new XmlSerializer(typeof(Fasteners));
StreamReader reader = new StreamReader(path);
fasteners = (Fasteners)serializer.Deserialize(reader);
reader.Close();
FastenerList.ItemsSource = fasteners.Fastener;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(FastenerList.ItemsSource);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Type");
PropertyGroupDescription groupDescription2 = new PropertyGroupDescription("Manufacturer");
PropertyGroupDescription groupDescription3 = new PropertyGroupDescription("Product");
view.GroupDescriptions.Add(groupDescription);
view.GroupDescriptions.Add(groupDescription2);
view.GroupDescriptions.Add(groupDescription3);
}
XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="185*"/>
<ColumnDefinition Width="309*"/>
</Grid.ColumnDefinitions>
<ListView Name="FastenerList" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="False" Height="200" Width="494" HorizontalAlignment="Center" VerticalAlignment="Top" Grid.ColumnSpan="2" SelectionChanged="FastenerList_SelectionChanged" SelectionMode="Single">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
<GridViewColumn Header="Product" Width="275" DisplayMemberBinding="{Binding Fastener,XPath=Name}" />
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate >
<Expander IsExpanded="False" Margin="5,0">
<Expander.Header>
<DockPanel >
<TextBlock Text="{Binding Path=Name}" FontWeight="DemiBold" Foreground="DarkSlateGray" FontSize="12" VerticalAlignment="bottom" Margin="5,0"/>
<TextBlock Text="{Binding ItemCount}" FontSize="12" Foreground="Gray" FontWeight="Bold" FontStyle="Italic" Margin="10,0" VerticalAlignment="Bottom" />
<TextBlock Text=" item(s)" FontSize="16" Foreground="Gray" FontStyle="Italic" VerticalAlignment="Bottom" />
</DockPanel>
</Expander.Header>
<StackPanel>
<ItemsPresenter Margin="25,0"/>
</StackPanel>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
<DockPanel HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="70" Width="400" Grid.ColumnSpan="2" Margin="47,0">
<DockPanel HorizontalAlignment="Left" VerticalAlignment="Center">
<CheckBox Name="DetailOnlyCheckBox" Content="Insert As Detail Only" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5,0"></CheckBox>
</DockPanel>
<DockPanel Width="400" Margin="-130,0">
<Button Name="InsertButton" Width="50" Height="25" Margin="0" Click="InsertButton_Click">Insert</Button>
</DockPanel>
</DockPanel>
</Grid>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。