2014-07-04 15 views
6

Tôi có ứng dụng WPF chứa nhiều loại TextBox es có loại Bindings khác nhau có cùng thuộc tính StringFormat (ứng dụng kỹ thuật của nó, Hộp văn bản sẽ hiển thị giá trị với đơn vị "xxx mm "...)Đặt WPF Binding.StringFormat Thuộc tính trên TextBox qua Kiểu

Tôi muốn thiết lập Ràng buộc trong XAML/Designer, nhưng tôi muốn tránh đặt thuộc tính TextFormat trên từng ràng buộc riêng lẻ. Có cách nào để làm điều này bằng cách sử dụng Styles?

Nếu tôi cố gắng thiết lập các ràng buộc trong một Setter cho thuộc tính Text như

<Style x:Name="mmtext" TargetType="TextBox" x:Key="mmtext"> 
     <Setter Property="Text" Value="{Binding Path=A,StringFormat={}{0} mm}" /> 
    </Style> 

Tôi cần phải cung cấp một Path trong tài sản Setters Value, và tôi không thể xác định bất kỳ ràng buộc trong XAML bản thân (như điều này sẽ ghi đè lên giá trị được đặt trong Kiểu).

Có cách nào để đặt/sửa đổi chỉ thuộc tính StringFormat trong một Ràng buộc đơn lẻ (tức là ràng buộc cho thuộc tính Text) bằng cách sử dụng Kiểu không?

Hoặc tôi có cần tìm mẫu templating hoặc kiểm soát tùy chỉnh không?

+0

Tôi không biết về giải pháp dựa trên phong cách. Điều gì về một công cụ chuyển đổi? Bạn vẫn phải chỉ rõ trình biến đổi trong ràng buộc của mỗi điều khiển, vì vậy bạn không giảm số lượng XAML bạn viết, nhưng ít nhất * định dạng * logic ở một nơi, nếu bạn cần thay đổi nó toàn bộ ứng dụng. –

Trả lời

3

bạn có thể có thể ràng buộc DataContext của hộp văn bản chứ không phải là tài sản văn bản

<TextBox DataContext="{Binding Path=A}" /> 

và sau đó sử dụng một setter như

<Style x:Name="mmtext" TargetType="TextBox" x:Key="mmtext"> 
    <Setter Property="Text" Value="{Binding Path=., StringFormat={}{0} mm}" /> 
</Style> 

cho một TwoWay ràng buộc, bạn sẽ cần một bộ chuyển đổi anyways để có được loại bỏ các mm thừa

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