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

ItemsControl 數(shù)據(jù)綁定的兩種方式

 更新時間:2021年03月03日 16:06:21   作者:Hello——尋夢者!  
這篇文章主要介紹了ItemsControl 數(shù)據(jù)綁定的兩種方式,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下

     最近在學習ItemsControl這個控件的時候,查看了MSDN上面的一個例子,并且自己做了一些修改,這里主要使用了兩種方式來進行相應的數(shù)據(jù)綁定,一種是使用DataContext,另外一種是直接將一個類綁定到前臺,其實這兩種方式原理差不多都是將數(shù)據(jù)模型的對象添加到一個ObservableCollection集合中,然后再綁定到前臺,下面分別介紹兩種綁定方式:

第一種

是將數(shù)據(jù)存儲在一個ObservableCollection集合中,然后作為ItemsControl的DataContext對象,下面分別貼出相關的代碼: 

<Window x:Class="TestGrid.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:TestGrid"
  Title="MainWindow" Height="350" Width="525"> 
 <Grid>
  <ItemsControl Margin="10" x:Name="myItemsControl" ItemsSource="{Binding}">   
   <ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
     <Border BorderBrush="Aqua" BorderThickness="1" CornerRadius="15">
      <ItemsPresenter/>
     </Border>
    </ControlTemplate>
   </ItemsControl.Template>   
   <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
     <WrapPanel/>
    </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>   
   <ItemsControl.ItemTemplate>
    <DataTemplate DataType="{ x:Type local:DataSource}">
     <DataTemplate.Resources>
      <Style TargetType="TextBlock">
       <Setter Property="FontSize" Value="18"/>
       <Setter Property="HorizontalAlignment" Value="Center"/>
      </Style>
     </DataTemplate.Resources>
     <Grid>      
      <Rectangle Fill="Green"/>      
      <Ellipse Fill="Red"/>
      <StackPanel>
       <TextBlock Margin="3,3,3,0" Text="{Binding Path=Priority,Mode=TwoWay}"/>
       <TextBlock Margin="3,0,3,7" Text="{Binding Path=TaskName,Mode=TwoWay}"/>
      </StackPanel>
     </Grid>
    </DataTemplate>
   </ItemsControl.ItemTemplate>  
   <ItemsControl.ItemContainerStyle>
    <Style>
     <Setter Property="Control.Width" Value="100"/>
     <Setter Property="Control.Margin" Value="5"/>
     <Style.Triggers>
      <Trigger Property="Control.IsMouseOver" Value="True">
       <Setter Property="Control.ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content.Description}"/>
      </Trigger>
     </Style.Triggers>
    </Style>
   </ItemsControl.ItemContainerStyle>
  </ItemsControl>
 </Grid> 
</Window>

    這里需要注意的地方是 ItemsSource="{Binding}"這句必須添加,否則后臺的數(shù)據(jù)是無法添加到前臺的,這個需要注意,這里貼出后臺的代碼 

using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TestGrid
{
 /// <summary>
 /// MainWindow.xaml 的交互邏輯
 /// </summary>
 public partial class MainWindow : Window
 {
  private ObservableCollection<DataSource> item = null;
  public MainWindow()
  {
   InitializeComponent();
   item = new ObservableCollection<DataSource>();
   item.Add(
    new DataSource()
    {
     Priority = "1",
     TaskName = "hello"
    }
    );
   item.Add(
     new DataSource()
    {
     Priority = "2",
     TaskName = "whats"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "3",
     TaskName = "your"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "4",
     TaskName = "name"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "5",
     TaskName = "can"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "6",
     TaskName = "you"
    }
    );
   this.myItemsControl.DataContext = item;

  }
 }
}
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TestGrid
{
 /// <summary>
 /// MainWindow.xaml 的交互邏輯
 /// </summary>
 public partial class MainWindow : Window
 {
  private ObservableCollection<DataSource> item = null;
  public MainWindow()
  {
   InitializeComponent();
   item = new ObservableCollection<DataSource>();
   item.Add(
    new DataSource()
    {
     Priority = "1",
     TaskName = "hello"
    }
    );
   item.Add(
     new DataSource()
    {
     Priority = "2",
     TaskName = "whats"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "3",
     TaskName = "your"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "4",
     TaskName = "name"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "5",
     TaskName = "can"
    }
    );
   item.Add(
    new DataSource()
    {
     Priority = "6",
     TaskName = "you"
    }
    );
   this.myItemsControl.DataContext = item;

  }
 }
}

  這里最重要的一句就是 this.myItemsControl.DataContext = item;這個是將剛才的集合綁定到ItemsControl控件上,這里需要我們的注意。

第二種

  另外一種方式的數(shù)據(jù)綁定就是將一個類綁定到這個ItemsControl控件上,具體的方式如下:

<Window x:Class="TestGrid.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:TestGrid"
  Title="MainWindow" Height="350" Width="525">
 <Window.Resources>
  <local:MyData x:Key="myDataSource"/>
 </Window.Resources>
 <Grid>
  <ItemsControl Margin="10" x:Name="myItemsControl" ItemsSource="{Binding Source={StaticResource myDataSource}}">   
   <ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
     <Border BorderBrush="Aqua" BorderThickness="1" CornerRadius="15">
      <ItemsPresenter/>
     </Border>
    </ControlTemplate>
   </ItemsControl.Template>   
   <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
     <WrapPanel/>
    </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>   
   <ItemsControl.ItemTemplate>
    <DataTemplate DataType="{ x:Type local:DataSource}">
     <DataTemplate.Resources>
      <Style TargetType="TextBlock">
       <Setter Property="FontSize" Value="18"/>
       <Setter Property="HorizontalAlignment" Value="Center"/>
      </Style>
     </DataTemplate.Resources>
     <Grid>      
      <Rectangle Fill="Green"/>      
      <Ellipse Fill="Red"/>
      <StackPanel>
       <TextBlock Margin="3,3,3,0" Text="{Binding Path=Priority,Mode=TwoWay}"/>
       <TextBlock Margin="3,0,3,7" Text="{Binding Path=TaskName,Mode=TwoWay}"/>
      </StackPanel>
     </Grid>
    </DataTemplate>
   </ItemsControl.ItemTemplate>  
   <ItemsControl.ItemContainerStyle>
    <Style>
     <Setter Property="Control.Width" Value="100"/>
     <Setter Property="Control.Margin" Value="5"/>
     <Style.Triggers>
      <Trigger Property="Control.IsMouseOver" Value="True">
       <Setter Property="Control.ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content.Description}"/>
      </Trigger>
     </Style.Triggers>
    </Style>
   </ItemsControl.ItemContainerStyle>
  </ItemsControl>
 </Grid> 
</Window>

這里我們通過資源來引用一個類,讓后使用  ItemsSource="{Binding Source={StaticResource myDataSource}}"將這個類綁定到ItemsSource控件上面,這里貼出相關的代碼,我們定義了一個MyData的類,將該類作為數(shù)據(jù)源綁定到前臺上,這個類的代碼如下

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestGrid
{
 public class MyData:ObservableCollection<DataSource>
 {
  public MyData()
  { 
   Add (new DataSource()
    {
     Priority = "1",
     TaskName = "My"
    }
    );
   Add(new DataSource()
    {
     Priority = "2",
     TaskName = "Name"
    }
    );
   Add(new DataSource()
    {
     Priority = "3",
     TaskName = "Is"
    }
    );
   Add(new DataSource()
    {
     Priority = "4",
     TaskName = "Ye"
    }
    );
   Add(new DataSource()
    {
     Priority = "5",
     TaskName = "Bo"
    }
    );
  
  }
  
 }
}

  這里面很重要的一部就是讓這個類繼承自 ObservableCollection<DataSource>,然后來添加相應的數(shù)據(jù)源,我們在使用繼承的時候需要注意這些技巧。

  其實這兩種情況都是將一個數(shù)據(jù)集合綁定到前臺,只不過是一些綁定的方式有所不同,實際的原理都是一樣的!

以上就是ItemsControl 數(shù)據(jù)綁定的兩種方式的詳細內容,更多關于ItemsControl 數(shù)據(jù)綁定的資料請關注腳本之家其它相關文章!

相關文章

  • 如何用WindowsForm給窗口添加一些簡單的動畫效果

    如何用WindowsForm給窗口添加一些簡單的動畫效果

    這篇文章主要介紹了如何用WindowsForm給窗口添加一些簡單的動畫效果,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Unity Shader實現(xiàn)3D翻頁效果

    Unity Shader實現(xiàn)3D翻頁效果

    這篇文章主要為大家詳細介紹了Unity Shader實現(xiàn)3D翻頁效果,Plane實現(xiàn)翻頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#程序(含多個Dll)合并成一個Exe的簡單方法

    C#程序(含多個Dll)合并成一個Exe的簡單方法

    這篇文章主要為大家詳細介紹了C#程序(含多個Dll)合并成一個Exe的簡單方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • C#獲取計算機硬件與操作系統(tǒng)的相關信息

    C#獲取計算機硬件與操作系統(tǒng)的相關信息

    這篇文章介紹了C#獲取計算機硬件與操作系統(tǒng)相關信息的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#窗體控件DataGridView常用設置

    C#窗體控件DataGridView常用設置

    這篇文章主要為大家詳細介紹了C#窗體控件DataGridView常用10項設置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C# XML字符串包含特殊字符的處理轉換方法小結

    C# XML字符串包含特殊字符的處理轉換方法小結

    今天用C#輸出XML文件時,發(fā)現(xiàn)報錯,經(jīng)過反復檢查調試,發(fā)現(xiàn)是因為某處內容含有某些特殊字符,這些特殊字符是在XML里不被允許的
    2020-07-07
  • WPF中的ValidationRule實現(xiàn)參數(shù)綁定解決方案

    WPF中的ValidationRule實現(xiàn)參數(shù)綁定解決方案

    在WPF中,默認情況下,DataContext是通過可視化樹來傳遞的,父元素的DataContext會自動傳遞給其子元素,以便子元素可以訪問父元素的數(shù)據(jù)對象,這篇文章主要介紹了WPF中的ValidationRule實現(xiàn)參數(shù)綁定解決方案,需要的朋友可以參考下
    2023-08-08
  • C# 獲取XML文件內容的多種方式總結

    C# 獲取XML文件內容的多種方式總結

    這篇文章主要介紹了C# 獲取XML文件內容的多種方式總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Unity調用手機攝像機識別二維碼

    Unity調用手機攝像機識別二維碼

    這篇文章主要為大家詳細介紹了Unity調用手機攝像機識別二維碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • C#實現(xiàn)OFD格式與PDF格式的互轉

    C#實現(xiàn)OFD格式與PDF格式的互轉

    OFD格式的文檔是一種我國獨有的國家標準版式的文檔。本文將通過C#程序介紹如何實現(xiàn)由OFD與PDF的互相轉換,感興趣的小伙伴可以了解一下
    2022-02-02

最新評論

宣恩县| 拜泉县| 柳林县| 琼结县| 双江| 和政县| 南充市| 巫山县| 米易县| 大渡口区| 和田市| 石台县| 镶黄旗| 文化| 海伦市| 游戏| 静乐县| 义乌市| 平度市| 时尚| 浦县| 正镶白旗| 无棣县| 商水县| 汉川市| 黔东| 合阳县| 阿城市| 汶川县| 屯留县| 泰安市| 新绛县| 随州市| 红河县| 栾川县| 会泽县| 渭南市| 密云县| 行唐县| 大同市| 广水市|