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

WPF轉(zhuǎn)換器IValueConverter用法

 更新時(shí)間:2022年01月27日 08:36:24   作者:痕跡g  
這篇文章介紹了WPF轉(zhuǎn)換器IValueConverter用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1. 前文

在普遍的也業(yè)務(wù)系統(tǒng)中, 數(shù)據(jù)要驅(qū)動(dòng)到操作的用戶界面, 它實(shí)際儲(chǔ)存的方式和表達(dá)方式會(huì)多種多樣, 數(shù)據(jù)庫存儲(chǔ)的數(shù)字 0或1, 在界面用戶看到顯示只是 成功或失敗, 或者存儲(chǔ)的字符、或更多的格式,

但是最終到界面上, 一般是需要一個(gè)轉(zhuǎn)換, 至于這個(gè)轉(zhuǎn)換是在數(shù)據(jù)庫中, 還是業(yè)務(wù)代碼中, 都是一個(gè)必不可少的操作。

2. WPF轉(zhuǎn)換器 ( IValueConverter )

WPF中, 提供一種數(shù)據(jù)轉(zhuǎn)換的接口、那就是在 System.Windows.Data 命名空間下的,IValueConverter 接口, 該接口的Convert方法可以任意的數(shù)據(jù)轉(zhuǎn)換操作。

namespace System.Windows.Data
{
    //
    // 摘要:
    //     提供將自定義邏輯應(yīng)用于綁定的方法。
    public interface IValueConverter
    {
        //
        // 摘要:
        //     轉(zhuǎn)換值。
        //
        // 參數(shù):
        //   value:
        //     綁定源生成的值。
        //
        //   targetType:
        //     綁定目標(biāo)屬性的類型。
        //
        //   parameter:
        //     要使用的轉(zhuǎn)換器參數(shù)。
        //
        //   culture:
        //     要用在轉(zhuǎn)換器中的區(qū)域性。
        //
        // 返回結(jié)果:
        //     轉(zhuǎn)換后的值。 如果該方法返回 null,則使用有效的 null 值。
        object Convert(object value, Type targetType, object parameter, CultureInfo culture);
        //
        // 摘要:
        //     轉(zhuǎn)換值。
        //
        // 參數(shù):
        //   value:
        //     綁定目標(biāo)生成的值。
        //
        //   targetType:
        //     要轉(zhuǎn)換為的類型。
        //
        //   parameter:
        //     要使用的轉(zhuǎn)換器參數(shù)。
        //
        //   culture:
        //     要用在轉(zhuǎn)換器中的區(qū)域性。
        //
        // 返回結(jié)果:
        //     轉(zhuǎn)換后的值。 如果該方法返回 null,則使用有效的 null 值。
        object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture);
    }
}

3.如何使用轉(zhuǎn)換器

為了更夠簡單的描述其作用, 在后臺(tái)聲明一個(gè)int類型為 Status的變量, 然后通過綁定的形式關(guān)聯(lián)的界面層。( 如下創(chuàng)建MainViewModel層,主要用于關(guān)聯(lián)DataContext )

public class MainViewModel : ViewModelBase
    {
        /// <summary>
        /// Initializes a new instance of the MainViewModel class.
        /// </summary>
        public MainViewModel()
        {
        }

        private int status;

        /// <summary>
        /// 狀態(tài) 0 / 1
        /// </summary>
        public int Status
        {
            get { return status; }

            set
            {
                status = value;
                RaisePropertyChanged();
            }
        }
    }

用戶界面綁定的Status字段, 為了能夠看到實(shí)際效果, 用了相同的字段綁定兩個(gè)進(jìn)行比較, 如下

        <UniformGrid Rows="2" Columns="2" >
            <TextBlock Text="沒有使用轉(zhuǎn)換器的效果:" Style="{DynamicResource TextBlockStyle}" />
            <TextBlock Text="{Binding Status}" Style="{DynamicResource TextBlockStyle}"/>
            <TextBlock Text="使用轉(zhuǎn)換器的效果:" Style="{DynamicResource TextBlockStyle}"/>
            <TextBlock Text="{Binding Status,Converter={StaticResource StatusConverter}}" Style="{DynamicResource TextBlockStyle}"/>
        </UniformGrid>

聲明一個(gè) StatusConverter 轉(zhuǎn)換器 , 改轉(zhuǎn)換器實(shí)現(xiàn)了,將數(shù)據(jù) 0 設(shè)置為未完成, 為1 則設(shè)置為完成。

public class StatusConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null && int.TryParse(value.ToString(), out int result))
            {
                if (result == 1)
                {
                    return "完成";
                }
            }
            return "未完成";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

界面層引用改轉(zhuǎn)換器, 完整代碼, 紅色加粗部分為引用聲明的轉(zhuǎn)換器。

<Window x:Class="WpfApp4.MainWindow"
        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:WpfApp4"
        xmlns:converter="clr-namespace:WpfApp4.Converter"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <converter:StatusConverter x:Key="StatusConverter"/>
        <Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
            <Setter Property="TextWrapping" Value="NoWrap"/>
            <Setter Property="TextTrimming" Value="None"/>
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="HorizontalAlignment" Value="Center"/>
            <Setter Property="FontSize" Value="25"/>
        </Style>
    </Window.Resources>
    <Grid>
        <UniformGrid Rows="2" Columns="2" >
            <TextBlock Text="沒有使用轉(zhuǎn)換器的效果:" Style="{DynamicResource TextBlockStyle}" />
            <TextBlock Text="{Binding Status}" Style="{DynamicResource TextBlockStyle}"/>
            <TextBlock Text="使用轉(zhuǎn)換器的效果:" Style="{DynamicResource TextBlockStyle}"/>
            <TextBlock Text="{Binding Status,Converter={StaticResource StatusConverter}}" Style="{DynamicResource TextBlockStyle}"/>
        </UniformGrid>
    </Grid>
</Window>

測(cè)試效果 :

結(jié)尾:

WPF中, 還有一種轉(zhuǎn)換器, 同樣是位于 System.Windows.Data命名空間的IMultiValueConverter 接口, 通過ILSpy可以查看到,如下所示:

IMultiValueConverter 的作用則可能進(jìn)行多個(gè)數(shù)據(jù)源綁定, 這種騷操作稱之為, 多路綁定, 根據(jù)多個(gè)數(shù)據(jù)庫來決定最后顯示的內(nèi)容。

到此這篇關(guān)于WPF轉(zhuǎn)換器IValueConverter用法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在.NET中掃描局域網(wǎng)服務(wù)的實(shí)現(xiàn)方法

    在.NET中掃描局域網(wǎng)服務(wù)的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇在.NET中掃描局域網(wǎng)服務(wù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 輕量級(jí)asp.net ajax解決方案詳解

    輕量級(jí)asp.net ajax解決方案詳解

    這篇文章主要介紹了輕量級(jí)asp.net ajax解決方案,結(jié)合實(shí)例形式較為詳細(xì)的分析了asp.net ajax的實(shí)現(xiàn)技巧與技術(shù)細(xì)節(jié),需要的朋友可以參考下
    2016-02-02
  • ASP.NET MVC5網(wǎng)站開發(fā)之實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)層功能(三)

    ASP.NET MVC5網(wǎng)站開發(fā)之實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)層功能(三)

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5網(wǎng)站開發(fā)之實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)層功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • asp.net DataGrid控件中彈出詳細(xì)信息窗口

    asp.net DataGrid控件中彈出詳細(xì)信息窗口

    在DataGrid控件里單擊某一行的超級(jí)鏈接時(shí),彈出一個(gè)新的頁面顯示出該行的詳細(xì)信息
    2008-12-12
  • 在 ASP.Net Core 中使用 MiniProfiler的方法

    在 ASP.Net Core 中使用 MiniProfiler的方法

    這篇文章主要介紹了在 ASP.Net Core 中使用 MiniProfiler的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • ASP.NET?Core中MVC模式實(shí)現(xiàn)路由一

    ASP.NET?Core中MVC模式實(shí)現(xiàn)路由一

    這篇文章介紹了ASP.NET?Core中MVC模式實(shí)現(xiàn)路由的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • asp.net get set用法

    asp.net get set用法

    屬性的定義和使用 屬性由兩個(gè)部分組成:屬性頭和存儲(chǔ)器。存儲(chǔ)器分為get訪問器和set訪問器。聲明屬性的一般形式為: 修飾符 類型 屬性名
    2008-05-05
  • .NET Windbg分析某婦產(chǎn)醫(yī)院WPF內(nèi)存溢出

    .NET Windbg分析某婦產(chǎn)醫(yī)院WPF內(nèi)存溢出

    這篇文章主要為大家介紹了.NET  Windbg分析某婦產(chǎn)醫(yī)院WPF內(nèi)存溢出,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • ASP.NET Core開發(fā)教程之Logging利用NLog寫日志文件

    ASP.NET Core開發(fā)教程之Logging利用NLog寫日志文件

    一直很喜歡 NLog 的簡潔和擴(kuò)展性,所以下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core開發(fā)教程之Logging利用NLog寫日志文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • ASP.NET中 Swagger添加JWT驗(yàn)證的流程

    ASP.NET中 Swagger添加JWT驗(yàn)證的流程

    主服務(wù)系統(tǒng)收到請(qǐng)求后會(huì)從headers中獲取“令牌”,并從“令牌”中解析出該用戶的身份權(quán)限,然后做出相應(yīng)的處理,這一系列操作都是JWT解析,下面小編給大家詳細(xì)介紹ASP.NET中 Swagger添加JWT驗(yàn)證的方法,感興趣的朋友一起看看吧
    2024-04-04

最新評(píng)論

若羌县| 疏勒县| 古田县| 平湖市| 弥勒县| 铅山县| 桃园县| 新兴县| 广南县| 曲沃县| 抚松县| 蓬莱市| 理塘县| 宣汉县| 剑阁县| 砚山县| 尉犁县| 龙里县| 思茅市| 镶黄旗| 黑河市| 喀喇| 榆林市| 轮台县| 来宾市| 天门市| 广州市| 溧阳市| 阿荣旗| 东方市| 台前县| 西乌珠穆沁旗| 尼玛县| 凤阳县| 庄浪县| 新乡县| 永丰县| 北宁市| 衡阳县| 金秀| 山东省|