当前位置:网站首页 / WPF / 正文

【ay wpf markup】AY XAML应该这样玩-ResourceCollection和ScriptHandler【6/18】

时间:2016年07月21日 | 作者 : aaronyang | 分类 : WPF | 浏览: 1197次 | 评论 0

定义一个集合ResourceCollection

该集合是ObservableCollection<object>


DEMO1 : 添加2个用户控件

用户控件UserControl1

<UserControl x:Class="WpfApplication3.UserControl1"
             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" 
             xmlns:local="clr-namespace:WpfApplication3"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Button x:Name="button" Content="用户控件1" HorizontalAlignment="Left" Margin="76,117,0,0" VerticalAlignment="Top" Width="90" Height="34"/>

    </Grid>
</UserControl>


用户控件2

<UserControl x:Class="WpfApplication3.UserControl2"
             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" 
             xmlns:local="clr-namespace:WpfApplication3"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <CheckBox x:Name="checkBox" Content="用户控件2" HorizontalAlignment="Left" Margin="96,110,0,0" VerticalAlignment="Top"/>
        <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="96,147,0,0" VerticalAlignment="Top" Width="75"/>

    </Grid>
</UserControl>



开始吧

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========


声明个资源,供控件使用

<Window x:Class="WpfApplication3.Window2"
        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:local="clr-namespace:WpfApplication3"
        xmlns:p="http://www.ayjs.net/markup"
        mc:Ignorable="d"
        Title="DEMO2 www.ayjs.net" Height="800" Width="1000" WindowStartupLocation="CenterScreen">
          <Window.Resources>
        <p:ResourceCollection x:Key="Lists">
            <local:UserControl1></local:UserControl1>
            <local:UserControl2></local:UserControl2>
        </p:ResourceCollection>
        <p:ResourceObject x:Key="ViewModel">
            <p:Property PropertyName="UserControls">
                <p:Iterator>
                    <p:ForEach Var="$userControl" Value="{StaticResource Lists}">
                        <p:Yield>
                            <p:Object>
                                <p:Property PropertyName="Name" Path="$userControl.ToString()"/>
                                <p:Property PropertyName="Control" Path="$userControl"/>
                            </p:Object>
                        </p:Yield>
                    </p:ForEach>
                </p:Iterator>
            </p:Property>
        </p:ResourceObject>
    </Window.Resources>

   </Window>

使用Yield每次遍历都返回过到UserControls对象

   <Grid DataContext="{Binding Value, Source={StaticResource ViewModel}}">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
        <TextBlock Text="ScriptHandler DEMO" FontSize="20"/>
        <ComboBox ItemsSource="{Binding UserControls}" Grid.Row="1">
                <p:Attached.Operations>
                    <p:ScriptHandler Path="SelectionChanged">
                        var $children = @FindElement("ContentHost").Children;
                    $children.Clear();
                    $children.Add(UserControls[@AssociatedObject.SelectedIndex].Control);
                    </p:ScriptHandler>
                </p:Attached.Operations>
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name}"/>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
            <Grid Name="ContentHost" Grid.Row="2" Background="White"/>
        </Grid>


效果图:

3.gif


通过这个DEMO,我们知道了如何定义个 集合,还有object,并在ComboBox中使用了ScriptHandler,还指定了自己的操作逻辑。

学会了Iterator,ForEach,Yield,Object对象,Property等

主要还是ScriptHandler,我们添加了自己的C#代码。FindElement是查找同级别的控件,根据名字查找的。




====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========



推荐您阅读更多有关于“WPF4.5,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

合肥科大智能常年招聘C# .NET CORE,vue前端,JAVA开发,有想换工作的私聊我AY唯一QQ:875556003和AY交流

抖音号:wpfui 工作是wpf,不接活,目前主要折腾maui

AYUI8社区版Github地址:前往获取

杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2010年开始web开发,2015年1月17日开始,兴趣学习研究WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表