文章出處
文章列表
當Binding源本身就是數據且不需要Path來指明時,可以設置Path的值為".",或直接省略Path。XAML中這個"."可以省略不寫,但在C#代碼中是不能省略的。
XAML:
<Window x:Class="沒有Path的Binding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" Title="MainWindow" Height="155.129" Width="209.615" Loaded="Window_Loaded"> <Grid> <StackPanel> <StackPanel.Resources> <sys:String x:Key="myString"> 菩提本無樹,明鏡亦非臺。 本來無一物,何來惹塵埃。 </sys:String> </StackPanel.Resources> <TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="{Binding Path=.,Source={StaticResource ResourceKey=myString}}" FontSize="16" Margin="5" Background="Yellow"></TextBlock> <!--標準的寫法是上面那個,下面這兩個也是一樣的--> <!--<TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="{Binding .,Source={StaticResource ResourceKey=myString}}" FontSize="16" Margin="5" Background="Yellow"></TextBlock>--> <!--<TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="{Binding Source={StaticResource ResourceKey=myString}}" FontSize="16" Margin="5" Background="Yellow"></TextBlock>--> <TextBlock x:Name="textBlock2" FontSize="16" Margin="5" TextWrapping="Wrap" Background="Green"></TextBlock> </StackPanel> </Grid> </Window>
C#:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; 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 沒有Path的Binding { /// <summary> /// MainWindow.xaml 的交互邏輯 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { string str = "菩提本無樹,明鏡亦非臺。本來無一物,何來惹塵埃。"; this.textBlock2.SetBinding(TextBlock.TextProperty, new Binding(".") { Source = str }); } } }
截圖:
文章列表
全站熱搜