最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF數(shù)據(jù)綁定Binding的用法

 更新時間:2022年04月21日 10:37:27   作者:農(nóng)碼一生  
這篇文章介紹了WPF數(shù)據(jù)綁定Binding的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、簡介

WPF的核心理念是變傳統(tǒng)的UI驅動數(shù)據(jù)變成數(shù)據(jù)驅動UI,支撐這個理念的基礎就是本章講的Data Binding和與之相關的數(shù)據(jù)校驗和數(shù)據(jù)轉換。在使用Binding的時候,最重要的就是設置它的源和路徑。
Bingding的源:
有三個屬性用來設置源:ElementName(string)、Source(Object) 和 RelativeSource(RelativeSource)。注:這三個只能指定一個,否則異常。
ElementName:源為一個元素(Element),這里用的是此元素中設置的Name屬性。
Source:以object作為源。<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>
RelativeSource:源相對于綁定目標的位置。
源是元素本身:{Binding RelativeSource={RelativeSource Self}};
源是Tempalte中元素的Parent:{Binding RelativeSource={RelativeSource TemplatedParent}};
源是綁定以collection形式的前一個數(shù)據(jù):{Binding RelativeSource={RelativeSource PreviousData}},MSDN上關于PreviousData的說明并不多。
以上三項為RelativeSource中的Static值,使用這些值可以減少內(nèi)存開銷。
源是Ancestor(可能比parent還高):{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=n, AncestorType={x:Type desiredType}}}

Bingding的Path:
Binding中的Path是 PropertyPath對象。
在最簡單的情況下,Path 屬性值是要用于綁定的源對象的屬性名稱,如 Path=PropertyName。
通過類似于C#中使用的語法,可以指定屬性的子屬性。例如,子句 Path=ShoppingCart.Order 將綁定設置為對象的子屬性 Order 或屬性 ShoppingCart。
若要綁定到附加屬性,請將附加屬性用括號括起。例如,若要綁定到附加屬性 DockPanel.Dock,則語法為 Path=(DockPanel.Dock)。
在應用了索引器的屬性名稱之后的方括號內(nèi),可以指定屬性的索引器。例如,子句 Path=ShoppingCart[0] 將綁定設置為與屬性的內(nèi)部索引處理文本字符串“0”的方式對應的索引。此外,還支持多個索引器。
在 Path 子句中可以同時使用索引器和子屬性,例如,Path=ShoppingCart.ShippingInfo[MailingAddress,Street]。
在索引器內(nèi)部,可以有多個由逗號(,) 分隔的索引器參數(shù)??梢允褂脠A括號指定每個參數(shù)的類型。例如,可以使用 Path="[(sys:Int32)42,(sys:Int32)24]",其中 sys 映射到 System 命名空間。
如果源為集合視圖,則可以用斜杠(/) 指定當前項。例如,子句 Path=/ 設置到視圖中當前項的綁定。如果源為集合,則此語法指定默認集合視圖的當前項。
可以結合使用屬性名和斜杠來遍歷作為集合的屬性。例如,Path=/Offices/ManagerName 指定源集合的當前項,該源集合包含同樣是集合的 Offices 屬性。其當前項是包含 ManagerName 屬性的對象。
也可以使用句點(.)路徑綁定到當前源。例如,Text=”{Binding}” 等效于 Text=”{Binding Path=.}”。

二、案例

案例一:

Grid代碼:

   <Grid>
        <!--行-->
        <Grid.RowDefinitions>
            <RowDefinition Height="200" />
            <RowDefinition Height="200"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--列-->
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <!--設置在Grid中布局位置-->
        <!--將MainWindow分為3x3的布局,則位于中間(1,1)位置,個人理解相當于坐標。-->
        <StackPanel  Grid.Row="1" Grid.Column="1">
            <TextBlock Width="250" Height="30" Text="顏色:" TextWrapping="Wrap"  Background="Azure" FontSize="20"/>
            <ListBox x:Name="listColor" Width="200" Height="90"  Background="Azure"  FontSize="20">
                <ListBoxItem Content="Blue"/>
                <ListBoxItem Content="Red"/>
                <ListBoxItem Content="Green"/>
                <ListBoxItem Content="Gray"/>
                <ListBoxItem Content="Cyan"/>
                <ListBoxItem Content="GreenYellow"/>
                <ListBoxItem Content="Orange"/>
            </ListBox>
            <TextBlock Width="200" Height="30" TextWrapping="Wrap"  FontSize="20" Margin="3,1,2,1"   Background="Azure" Text="改變背景色:" />
            <!--綁定選擇值-->
            <TextBlock Width="200" Height="30" Text="{Binding ElementName=listColor, Path=SelectedItem.Content, Mode=OneWay}"  Background="{Binding ElementName=listColor, Path=SelectedItem.Content, Mode=OneWay}">
            </TextBlock>
            <TextBox Name="txtTwoWay" Text="{Binding ElementName=listColor,Path=SelectedItem.Content,Mode=TwoWay}"  Background="{Binding ElementName=listColor,  Path=SelectedItem.Content,Mode=TwoWay}" >
            </TextBox>
        </StackPanel>
    </Grid>

執(zhí)行效果:

案例二:

Grid代碼:

<Grid>
        <StackPanel>
            <TextBlock Text="{Binding ElementName=slider,Path=Value}"/>
            <Slider x:Name="slider" Maximum="100" Minimum="1"/>
        </StackPanel>
 </Grid> 

執(zhí)行效果:

三、總結

在上例子中綁定數(shù)據(jù)源時候用到了Mode屬性,通過查閱資料得知有以下區(qū)別:
oneTime:一次性綁定,將數(shù)據(jù)給控件,綁定就結束。
oneWay:數(shù)據(jù)源改變會影響綁定該數(shù)據(jù)源的控件。
twoWay:數(shù)據(jù)源改變會影響綁定該數(shù)據(jù)源的控件,并且控件中數(shù)據(jù)改變時也會影響到數(shù)據(jù)源。

到此這篇關于WPF數(shù)據(jù)綁定Binding的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • ASP.NET仿新浪微博下拉加載更多數(shù)據(jù)瀑布流效果

    ASP.NET仿新浪微博下拉加載更多數(shù)據(jù)瀑布流效果

    本篇文章介紹了如何實現(xiàn)下拉加載更多數(shù)據(jù)瀑布流的效果,這種效果最近很流行,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • asp.net下Cache 緩存操作類代碼

    asp.net下Cache 緩存操作類代碼

    asp.net Cache 緩存操作類實現(xiàn)代碼,需要的朋友可以參考下。
    2011-03-03
  • Quartz在.NET中的使用教程

    Quartz在.NET中的使用教程

    Quartz是一個強大、開源、輕量級的任務調度框架,支持cron-like表達式其他一些優(yōu)秀的特性。這篇文章主要介紹了Quartz在.NET中的使用,需要的朋友可以參考下
    2021-12-12
  • Asp.Net Core簡介與安裝教程

    Asp.Net Core簡介與安裝教程

    這篇文章主要為大家詳細介紹了Asp.Net Core簡介與安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • .net socket客戶端實例代碼分享

    .net socket客戶端實例代碼分享

    這篇文章主要介紹了.net寫的socket客戶端,下面有使用方法,大家參考使用吧
    2013-12-12
  • .NET關于API 句柄泄漏分析

    .NET關于API 句柄泄漏分析

    本文主要介紹了.NET關于API 句柄泄漏分析,文中結合代碼與圖片講解的非常詳細,感興趣的小伙伴可以自行參考一下
    2021-08-08
  • ASP.NET MVC下的四種驗證編程方式[續(xù)篇]

    ASP.NET MVC下的四種驗證編程方式[續(xù)篇]

    ASP.NET MVC支持四種服務端驗證的編程方式(“手工驗證”、“標注ValidationAttribute特性”、“讓數(shù)據(jù)類型實現(xiàn)IValidatableObject或者IDataErrorInfo”),那么在ASP.NET MVC框架內(nèi)部是如何提供針對這四種不同編程方式的支持的呢?本篇文章就來聊聊這背后的故事。
    2016-12-12
  • .NET發(fā)起web請求時維持Session

    .NET發(fā)起web請求時維持Session

    一般使用.NET C#發(fā)起一個web請求是用WebClient類,應為使用很簡單,但是每調用一次OpenRead就會在服務器啟用一個新Session,使用HttpWebRequest + CookieContainer就可以讓多個web請求只有一個session。
    2009-05-05
  • 在ASP.NET Core中實現(xiàn)一個Token base的身份認證實例

    在ASP.NET Core中實現(xiàn)一個Token base的身份認證實例

    以前在web端的身份認證都是基于Cookie | Session的身份認證,本篇文章主要介紹了在ASP.NET Core中實現(xiàn)一個Token base的身份認證實例,有興趣的可以了解一下。
    2016-12-12
  • asp.net 讀取并修改config文件實現(xiàn)代碼

    asp.net 讀取并修改config文件實現(xiàn)代碼

    讀取并修改 config 文件的asp.net代碼,方便我們用asp.net修改配置文件。
    2009-11-11

最新評論

渭源县| 常山县| 卓尼县| 象州县| 新蔡县| 车险| 土默特左旗| 甘南县| 梨树县| 锡林郭勒盟| 兖州市| 北川| 洪洞县| 定襄县| 乌鲁木齐市| 稷山县| 萨迦县| 焦作市| 绍兴县| 玉屏| 蕲春县| 黄浦区| 汾西县| 自贡市| 平昌县| 临邑县| 梅河口市| 永修县| 犍为县| 于田县| 泰兴市| 精河县| 苏州市| 阿拉尔市| 兰溪市| 新野县| 泰宁县| 醴陵市| 合山市| 九龙县| 遂宁市|