首页 > 代码库 > WPF Demo5

WPF Demo5

<Application x:Class="Demo5.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">

    <!--StartupUri="MainWindow.xaml"   启动页-->
    <Application.Resources>
         
    </Application.Resources>
</Application>

  

<Window x:Class="Demo5.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <XmlDataProvider x:Key="xmlData" XPath="/countries/country">
            <!-- 示例数据 -->
            <x:XData>
                <countries xmlns="">

                    <country name="中国">
                        <province name="陕西">
                            <city>西安</city>
                            <city>宝鸡</city>
                        </province>
                        <province name="山西">
                            <city>太原</city>
                            <city>大同</city>
                        </province>
                        <province name="内蒙古自治区">
                            <city>呼和浩特</city>
                            <city>包头</city>
                            <city>集宁</city>
                        </province>
                        <province name="河北">
                            <city>石家庄</city>
                            <city>保定</city>
                        </province>
                    </country>

                    <country name="美国">
                        <province name="加利福尼亚">
                            <city>洛杉矶</city>
                            <city>圣迭戈</city>
                        </province>
                        <province name="福罗里达">
                            <city>杰克逊维尔</city>
                            <city>迈阿密</city>
                        </province>
                    </country>

                </countries>
            </x:XData>
        </XmlDataProvider>

        <Style TargetType="HeaderedContentControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="HeaderedContentControl">
                        <DockPanel>
                            <Border DockPanel.Dock="Top"  Margin="3"  CornerRadius="3"   Background="DarkRed">
                                <TextBlock Text="{TemplateBinding Header}"  HorizontalAlignment="Center" Foreground="White"/>
                            </Border>
                            <ContentPresenter ContentSource="Content" ContentTemplate="{TemplateBinding ContentTemplate}"/>
                        </DockPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style TargetType="ListBoxItem">
            <Setter Property="SnapsToDevicePixels" Value="http://www.mamicode.com/true"/>
            <Setter Property="OverridesDefaultStyle" Value="http://www.mamicode.com/true"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <Border Name="Border"  Padding="2" SnapsToDevicePixels="true">
                            <ContentPresenter />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="http://www.mamicode.com/true">
                                <Setter TargetName="Border" Property="Background" Value="http://www.mamicode.com/YellowGreen"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </Window.Resources>
    <Grid DataContext="{Binding Source={StaticResource xmlData}}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <HeaderedContentControl Header="国家">
            <ListBox ItemsSource="{Binding}" DisplayMemberPath="@name" IsSynchronizedWithCurrentItem="True"/>
        </HeaderedContentControl>
        
        <HeaderedContentControl Header="省/州" Grid.Column="1">
            <ListBox Name="lbxProvince" ItemsSource="{Binding XPath=province}"
                          DisplayMemberPath="@name" IsSynchronizedWithCurrentItem="True"/>
        </HeaderedContentControl>          
        
        <HeaderedContentControl Header="城市" Grid.Column="2">
            <ListBox DataContext="{Binding ElementName=lbxProvince, Path=SelectedItem}"
                          ItemsSource="{Binding XPath=city}"
                          IsSynchronizedWithCurrentItem="True"/>
        </HeaderedContentControl>
    </Grid>
</Window>

运行效果如下:

技术分享

WPF Demo5