2011-08-18 39 views
5

Tôi có mã XAML sau đây mà tôi muốn thực hiện trong xaml.cs.Ràng buộc RichTextBox vào Điều khiển thanh trượt trong C#

<RichTextBox.LayoutTransform> 
    <ScaleTransform ScaleX="{Binding ElementName=mySlider, Path=Value}" 
        ScaleY="{Binding ElementName=mySlider, Path=Value}"/> 
</RichTextBox.LayoutTransform> 

Về cơ bản nó liên kết thanh trượt với richtextbox và thực hiện phóng to.

Sau đây là những gì tôi đã cố gắng:

RichTextBox newtext = new RichTextBox(); 
ScaleTransform mytran = new ScaleTransform(); 
mytran.ScaleX = mySlider.Value; 
mytran.ScaleY = mySlider.Value; 
newtext.LayoutTransform = mytran; 

Trả lời

3

Mã theo sau là tương đương với XAML

//<RichTextBox.LayoutTransform> 
// <ScaleTransform ScaleX="{Binding ElementName=mySlider, Path=Value}" 
//     ScaleY="{Binding ElementName=mySlider, Path=Value}"/> 
//</RichTextBox.LayoutTransform> 

ScaleTransform scaleTransform = new ScaleTransform(); 
Binding scaleXBinding = new Binding("Value"); 
scaleXBinding.Source = mySlider; 
Binding scaleYBinding = new Binding("Value"); 
scaleYBinding.Source = mySlider; 
BindingOperations.SetBinding(scaleTransform, 
          ScaleTransform.ScaleXProperty, 
          scaleXBinding); 
BindingOperations.SetBinding(scaleTransform, 
          ScaleTransform.ScaleYProperty, 
          scaleYBinding); 

RichTextBox newText = new RichTextBox(); 
newText.LayoutTransform = scaleTransform; 
1

Không chắc chắn nếu bạn đang yêu cầu làm thế nào để thực hiện các ràng buộc trong mã, hoặc làm thế nào để thiết lập ScaleXScaleY thuộc tính trong mã (ví dụ, mà không ràng buộc). Nếu đúng như vậy, dưới đây là cách bạn thực hiện:

Trước tiên, hãy cung cấp tên ScaleTransform của bạn, ví dụ: "myScaleTransform":

<RichTextBox.LayoutTransform> 
    <ScaleTransform x:Name="myScaleTransform" ScaleX="1" ScaleY="1" /> 
</RichTextBox.LayoutTransform> 

Sau đó, thêm một event handler cho sự kiện ValueChanged của mySlider. Trong xử lý này, cập nhật ScaleXScaleY thuộc tính của myScaleTransform:

public void mySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
    myScaleTransform.ScaleX = mySlider.Value; 
    myScaleTransform.ScaleY = mySlider.Value; 
} 

Hope this helps.

1

bạn đã thiết lập các biến nhưng không phải là ràng buộc - nó sẽ được cố định. Bạn cần phải sử dụng một cái gì đó giống như

Binding scaleBinding = new Binding("Value"){ElementName="mySlider"}; 
BindingOperations.SetBinding(mytran, ScaleTransform.ScaleXProperty, scaleBinding); 
BindingOperations.SetBinding(mytran, ScaleTransform.ScaleYProperty, scaleBinding); 

để thực sự với cùng

Các vấn đề liên quan