WPF資料繫結-用XAML繫結
阿新 • • 發佈:2018-12-22
用XAML繫結
WPF元素不僅是資料繫結的目標,它還可以是繫結的源。
WPF元素不僅是資料繫結的目標,它還可以是繫結的源。
可以把一個WPF元素的源屬性繫結到另一個WPF元素的目標屬性上。
ElementName指向繫結源,Path指向源屬性
此處CheckBox為繫結源,IsChecked為源屬性,Label為目標
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical"> <CheckBox Name="checkBox" Content="CheckBox"/> <Label Name="lb" Content="{Binding ElementName=checkBox,Path=IsChecked}"/> </StackPanel>
除了用XAML程式碼定義繫結資訊之外,還可以在隱藏程式碼中使用Binding元資料擴充套件來定義。
在隱藏程式碼中,必須新建一個Binding物件,並設定Path和Source屬性。必須把Sourch屬性設定為源物件,把Path屬性設定為一個ProperyPath例項,它用源物件的屬性名進行初始化。對於派生子FrameworkElement的控制元件,可以呼叫SetBindind()方法來定義繫結。
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical"> <CheckBox Name="checkBox" Content="CheckBox"/> <Label Name="lb" Content=""/> </StackPanel>
private void Init()
{
Binding binding = new Binding();
binding.Source = checkBox;
binding.Path = new PropertyPath("IsChecked");
lb.SetBinding(Label.ContentProperty, binding);
}
對於以下ScaleTransfrom不派生子FrameworkElement,而派生自Freezable基類。使用輔助類BindingOperations可以繫結這類控制元件。
BindingOperations類的SetBinding()方法需要一個DependencyObject,在本例中是ScaleTransform例項。對於第二個和第三個引數,SetBinding()方法還需要繫結目標的dependency屬性和Binding物件。
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Vertical">
<StackPanel.LayoutTransform>
<ScaleTransform x:Name="scaleTrans"/>
</StackPanel.LayoutTransform>
<CheckBox Name="checkBox" Content="CheckBox"/>
<Label Name="lb" Content="文字"/>
</StackPanel>
<Slider HorizontalAlignment="Left" VerticalAlignment="Bottom" x:Name="slider" Value="1" Minimum="0.4" Maximum="3" Width="150"/>
private void Init()
{
Binding binding = new Binding();
binding.Source = slider;
binding.Path = new PropertyPath("Value");
BindingOperations.SetBinding(scaleTrans, ScaleTransform.ScaleXProperty, binding);
BindingOperations.SetBinding(scaleTrans, ScaleTransform.ScaleYProperty, binding);
}