1. 程式人生 > >WPF 之 Binding 資料驅動UI—實戰

WPF 之 Binding 資料驅動UI—實戰

1、一個TextBox顯示另一個TextBox文字的第4個字元

            <TextBox x:Name="tb1"/>
            <!--tb2繫結:單向繫結 tb1的Text屬性第4個字元-->
            <TextBox x:Name="tb2" Text="{Binding Path=Text.[3],ElementName=tb1,Mode=OneWay}"/>

2、ComboBox 繫結List

    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            this.DataContext = new Window1Model();
        }
    }

    public class Window1Model
    {
        public List<string> list{get;set;}
        public Window1Model()
        { 
            list = new List<string> { "1", "2", "3" };
        }
    }
<ComboBox x:Name="a" ItemsSource="{Binding list}" SelectedIndex="0"/>


3、ComboBox 繫結 資源字典

建立資源字典 TreeFile.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:s="clr-namespace:System;assembly=mscorlib"
                    >
    <x:ArrayExtension x:Key="TermTypeList" Type="{x:Type s:String}">
        <s:String>A</s:String>
        <s:String>B</s:String>
        <s:String>C</s:String>
    </x:ArrayExtension>
</ResourceDictionary> 

App.xaml

<Application x:Class="AutomaticConfigurationAPP.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Resources/Xml/TreeFile.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

<ComboBox ItemsSource="{Binding Source={StaticResource TermTypeList}}"/>


4、ComboBox 繫結 XML

<?xml version="1.0" encoding="utf-8" ?>
<Data xmlns="">
  <Grade Name="一年級"/>
  <Grade Name="二年級"/>
</Data>


    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            this.DataContext = new Window1Model();
        }
    }

    public class Window1Model
    {
        public IEnumerable<string> list { get; set; }
        public Window1Model()
        {

            XDocument xdoc = XDocument.Load(Environment.CurrentDirectory + "\\XMLFile1.xml");
            list = from element in xdoc.Descendants("Grade")
                   select element.Attribute("Name").Value.ToString();
        }
    }


<ComboBox ItemsSource="{Binding list}"/>

5、List集合Add後,view層沒發生變化。

使用動態集合 ObservableCollection

        private ObservableCollection<VariableModel> listvariable;
        public ObservableCollection<VariableModel> ListVariable
        {
            get { return listvariable; }
            set
            {
                listvariable = value;
                NotifyPropertyChanged("ListVariable");
            }
        }


6、點選滑鼠左鍵,命令不執行,使用相對資料來源,找到命令

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

                <TextBlock x:Name="a" Text="{Binding Name}">
                              <i:Interaction.Triggers>
                                <i:EventTrigger EventName="MouseLeftButtonDown">
                                    <i:InvokeCommandAction Command="{Binding (DataContext).TreeSelectCommand,
                        RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Page}}" CommandParameter="{Binding Name}"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                </TextBlock>

相關推薦

WPF Binding 資料驅動UI實戰

1、一個TextBox顯示另一個TextBox文字的第4個字元 <TextBox x:Name="tb1"/> <!--tb2繫結:單向繫結 tb1的Text屬性第4個字元-->

WPF Binding資料的校驗與轉換(三)

# 一、前言 ​ Binding 的作用就是架在 **Source** 和 **Target** 之間的橋樑,資料可以在這座橋樑的幫助下來流通。就像現實中的橋樑會設定一些關卡進行安檢一樣,Binding 這座橋上也可以設定關卡對資料的有效性進行校驗。不僅如此,當兩端要求使用不同的資料型別時,我

從壹開始微服務 [ DDD ] 十 ║領域驅動實戰篇·中】:命令匯流排Bus分發(一)

烽火 哈嘍大家好,老張又見面了,這兩天被各個平臺的“雞湯貼”差點亂了心神,部落格園如此,簡書亦如此,還好群裡小夥伴及時提醒,路還很長,這些小事兒就隨風而去吧,這周本不打算更了,但是被群裡小夥伴“催稿”了,至少也是對我的一個肯定吧,又開始熬夜中,請@初久小夥伴留言,我不知道你的地址,就不放連結了。 收住,言

Excel資料驅動框架實戰

由於該測試框架是我在工作的系統中搭建的,故不寫系統網址,重點記錄搭建的框架過程與重點介紹,方便以後察看。 一、系統介紹: 1)在系統中進行登陸 2)在系統登陸的情況下,進行新增操作 3)在新增的資料中進入詳情介面,新增屬性值 二、資料驅動框架搭建的詳細過程: 1、新建一個j

開篇:資料驅動UI的設計理念

一、概述 本演示主要是對WPF一個非常重要的設計理念做一個簡單的概述。這個理念就是:資料驅動UI的設計理念。這是我們的開篇,我們先來看一下這個設計理念,然後感受一下它與我們之前的掌握的UI設計方式有著怎樣的不同。 總體來說,Windows GUI開發大致上經歷了4個

WPFBinding

Binding類:提供對繫結定義的高階訪問,該繫結連線繫結目標物件(通常為 WPF 元素)的屬性和任何資料來源(例如資料庫、XML 檔案,或包含資料的任何物件)。 Mode 屬性:獲取或設定一個值,該值指示繫結的資料流方向。 (Default:使用繫結目

WPFBinding深入探討

轉載於:http://blog.csdn.net/fwj380891124/article/details/8107646 1,Data Binding在WPF中的地位 程式的本質是資料+演算法。資料會在儲存、邏輯和介面三層之間流通,所以站在資料的

.netcore持續整合測試篇Xunit資料驅動測試

>[系列目錄](https://www.cnblogs.com/tylerzhou/p/11204826.html) Nunit裡提供了豐富的資料測試功能,雖然Xunit裡提供的比較少,但是也能滿足很多場景下使用了,如果資料場景非常複雜,Nunit和Xunit都是無法勝任的,有不少測試者選擇自己編寫一個

WPF應用Binding資料轉換

有時資料來源的型別與目標型別不一致時,需要把源通過一定的轉換之後才能繫結到目標之上。 本例: (1) 把車的型別轉換成車所對應的圖片路徑; (2) 把車的執行狀態轉換成CheckBox的狀態; 1、類/型別定義 public enum Category//車的型

WPFUI虛擬化

scroll http detail 內容 soft zh-cn panel mic nts 原文:WPF之UI虛擬化在WPF應用程序開發過程中,大數據量的數據展現通常都要考慮性能問題。有下面一種常見的情況:原始數據源數據量很大,但是某一時刻數據容器中的可見元素個數是有限的

Python 資料驅動工具:DDT

https://www.cnblogs.com/miniren/p/7099187.html 背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那麼就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資

python爬蟲的入門05------實戰:爬取貝殼網(用re匹配需要的資料

# 第二頁:https://hz.zu.ke.com/zufang/pg2 # 第一頁:https://hz.zu.ke.com/zufang/pg1 import urllib.request import random import re def user_ip(): ''

Python實戰Excel資料按索引更新

    在日常工作中,我們經常需要需要批量更新資料,比如有個destination表,裡面有一列的資料需要被更新,更新的依據為reference表,python指令碼執行前和執行後的資料列示意圖如下:     我們使用Excel檔案作為confi

WPFUI知識總結

資料夾選擇框 在程式集中內建資源 開啟新視窗 彈出

QtChart實現曲線圖表繪製直角座標系(支援曲線消隱、資料點突出、資料驅動重新整理、滑鼠進入顯示數值)

簡述 Qt下繪製曲線圖表的方法選擇很多,下面我將介紹如何使用QtCharts繪製優雅圖表。 本文的Demo支援點選Mark圖示消隱曲線;資料點的突出顯示;滑鼠進入提示數值;資料驅動重新整理顯示;圖表自動縮放,可移植性比較好。 需要說明Demo的編碼環境是Qt Creator 5.8,使用

SQL Server 大資料搬遷檔案組備份還原實戰

一.本文所涉及的內容(Contents) 二.背景(Contexts)   有一個數據庫大概在700G左右,需要從伺服器A搬遷到伺服器B,兩臺伺服器網路傳輸速度可以達到8MB/s,怎麼做才能更快的搬遷並且宕機時間最短呢?   資料庫業務邏輯概述:這個資料庫只會插入資料,每天大概有300W條資料,不會

WPF 呼叫執行緒必須為 STA,因為許多 UI 元件都需要

WPF中,程式碼中準備控制控制元件內容時,有時會報錯:“ 呼叫執行緒必須為 STA,因為許多 UI 元件都需要 ”。   如在winform下面,使用多執行緒時,控制元件的值讀取是可以的,但如果要更改,那麼就必須進行一些特別的處理。WPF中也一樣。   首先,WPF中,當報上面那個錯誤時,程式碼可以改成類

WPF 調用線程必須為 STA,因為許多 UI 組件都需要

lose token 更改 con target result dispatch for bsp WPF中,代碼中準備控制控件內容時,有時會報錯:“ 調用線程必須為 STA,因為許多 UI 組件都需要 ”。   如在winform下面,使用多線程時

【智慧製造】數聯CTO方育柯:資料驅動下的製造降本與增效案例解析

【資料猿導讀】不管是大眾,還是創新創業者,很多人都在關注智慧製造行業,但我覺得,整個工業行業依然

vue的原始碼學習五——7.資料驅動(update)

1. 介紹         版本:2.5.17。         我們使用vue-vli建立基於Runtime+Compiler的vue腳手架。  &nb