2012-01-31 27 views
6

Ứng dụng của tôi sẽ chạy trên máy tính có sceens cảm ứng, do nhân viên cảnh sát điều hành trong khi lái xe. Tôi đang làm cho tất cả các yếu tố đồ họa lớn hơn để chúng có thể được vận hành bởi những người có ngón tay xúc xích như của tôi và lớn hơn.Thay đổi kích thước của hộp kiểm và dấu kiểm trong đó

Tôi có một Hộp kiểm cần xuất hiện trên màn hình. Tôi cần phải mở rộng kích thước của hộp kiểm và dấu kiểm lớn hơn. Tôi đã thử chỉnh sửa mẫu cho Checkbox trong Expression Blend bằng cách nhấn chuột phải và chọn Edit Tempate | Chỉnh sửa bản sao. Tôi thiết lập bản sao để nó sẽ áp dụng cho tất cả các hộp kiểm.

Tôi đã có thể làm cho hộp lớn hơn theo mẫu có chiều cao là & thuộc tính chiều rộng cho ActualHeight của điều khiển. Tuy nhiên, dấu kiểm không phát triển do đó và ở góc trên bên trái. Nó không có vẻ đúng, để nói rằng ít nhất.

Khi tôi thay đổi nội dung mẫu, đây là XAML tôi trở:

<Style TargetType="{x:Type CheckBox}"> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
    <Setter Property="Background" Value="{StaticResource CheckBoxFillNormal}"/> 
    <Setter Property="BorderBrush" Value="{StaticResource CheckBoxStroke}"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="FocusVisualStyle" Value="{StaticResource EmptyCheckBoxFocusVisual}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type CheckBox}"> 
       <BulletDecorator Background="Transparent" SnapsToDevicePixels="true"> 
        <BulletDecorator.Bullet> 
         <Microsoft_Windows_Themes:BulletChrome BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" IsChecked="{TemplateBinding IsChecked}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="{TemplateBinding ActualHeight}" Height="{TemplateBinding ActualHeight}"/> 
        </BulletDecorator.Bullet> 
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
       </BulletDecorator> 
       <ControlTemplate.Triggers> 
        <Trigger Property="HasContent" Value="true"> 
         <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/> 
         <Setter Property="Padding" Value="4,0,0,0"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Expression Blend sẽ không cho phép tôi ecit mẫu của BulletChrome. Các tùy chọn Chỉnh sửa Hiện tại và Chỉnh sửa Bản sao bị tắt.

Làm cách nào để hoàn thành những gì tôi muốn làm?

Tony

Trả lời

5

XAML cho mặc định ví dụ được tạo thành của BulletDecorator có thể được tìm thấy here on MSDN. Hầu như toàn bộ đoạn XAML trên trang đó đề cập đến giao diện và hành vi của BulletDecorator.

Tại trung tâm của tất cả XAML đó là hai đối tượng Path. Đầu tiên cho dấu chọn, và thứ hai cho các nhãn hiệu không xác định (mặc dù tên 'InderminateMark' được đánh vần sai trong XAML mẫu. May mắn thay, nó đánh vần luôn sai ở khắp mọi nơi trong ví dụ CheckBox, vì vậy nó là OK.

  <Path Visibility="Collapsed" 
        Width="7" 
        Height="7" 
        x:Name="CheckMark" 
        SnapsToDevicePixels="False" 
        StrokeThickness="2" 
        Data="M 0 0 L 7 7 M 0 7 L 7 0"> 
       <Path.Stroke> 
       <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
       </Path.Stroke> 
      </Path> 
      <Path Visibility="Collapsed" 
        Width="7" 
        Height="7" 
        x:Name="InderminateMark" 
        SnapsToDevicePixels="False" 
        StrokeThickness="2" 
        Data="M 0 7 L 7 0"> 
       <Path.Stroke> 
       <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
       </Path.Stroke> 
      </Path> 

Như được chỉ ra bởi HB trong các ý kiến, các chủ đề WPF mặc định có thể được tìm thấy here.

+0

Những trang trên MSDN này ** không ** cung cấp cho bạn các mẫu mặc định nhưng các ví dụ được tạo sẵn. ([Xem phần này để mặc định] (http://stackoverflow.com/questions/1559261/control-template-for-existing-controls-in-wpf)) –

+0

@ H.B. Cảm ơn, tôi không biết rằng những ví dụ đó không phải là mặc định. Điều đó sẽ giải thích một số mâu thuẫn mà tôi đã nhận thấy với họ. – Stewbob

+0

Sau khi thảo luận với ông chủ của tôi, tôi sẽ tiếp tục tùy biến hơn nữa. Anh ta muốn các hộp kiểm tra trông giống các nút Radio hơn, không tròn. Anh ta muốn một đường viền sau đó được lấp đầy với một màu tối của một kích thước khá để dễ nhìn. Vì nó là, các dấu kiểm tra là quá dễ dàng để bỏ lỡ trong khi bạn đang lái xe. Làm cho chúng nổi bật là quan trọng. –

1

gì bạn đang tìm kiếm là Đường dẫn mà thực sự là dấu kiểm và sẽ cần phải chỉnh sửa nó. Nếu bạn xem phần this article về tùy chỉnh hộp kiểm làm việc trong WPF nó cho bạn thấy về cơ bản làm thế nào để làm điều đó khá đơn giản. Nếu bạn muốn có thêm ví dụ, tôi có thể đá ra một cách khá nhanh chóng sau khi làm việc một chút sau ngày hôm nay. Chúc mừng!

3

Bạn không thể hoàn hảo, nhưng nó hoạt động.Bạn kiểu TextBlock (ví dụ: Cỡ chữ, Chiều cao ...) và dấu kiểm tăng lên với TextBlock.

<StackPanel Name="CheckBoxPanel" Orientation="Horizontal"> 
    <Viewbox Height="{Binding Path=ActualHeight, ElementName=CheckBoxPanel}"> 
     <CheckBox /> 
    </Viewbox> 
    <TextBlock /> <!-- for CheckBox Content --> 
</StackPanel> 
+1

Sử dụng Hộp ngắm là cách tốt hơn câu trả lời được phê duyệt. –

1

Nếu bạn thay đổi kích thước thì bạn sẽ phải thay đổi đường dẫn, đường dẫn được cố định với kích thước. Nếu bạn có một con đường đã có và chỉ muốn mở rộng nó, bạn có thể tăng tất cả các giá trị số tương ứng.

Gần đây, tôi cần thay đổi kiểu hộp kiểm tùy chỉnh ví dụ của MSDN thành dấu chọn (https://msdn.microsoft.com/en-us/library/ms752319(v=vs.85).aspx) và ở đây đường dẫn trước và sau.

original path checkbox

<Path Visibility="Collapsed" 
    Width="7" 
    Height="7" 
    x:Name="CheckMark" 
    SnapsToDevicePixels="False" 
    StrokeThickness="2" 
    Data="M 0 0 L 7 7 M 0 7 L 7 0"> 
    <Path.Stroke> 
     <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
    </Path.Stroke> 
</Path> 

enter image description here

<Path Visibility="Collapsed" 
    Width="9" 
    Height="9" 
    x:Name="CheckMark" 
    SnapsToDevicePixels="False" 
    StrokeThickness="2" 
    Data="M 1 4.5 L 4 7.5 M 4 7.5 L 8 1"> 
    <Path.Stroke> 
     <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
    </Path.Stroke> 
</Path> 

Cả hai ví dụ có một con đường với hai dòng có sử dụng tọa độ XY cho sự khởi đầu của họ và vị trí kết thúc. Lưu ý trong hình ảnh đầu tiên các số nằm trong khoảng từ 0 đến 7 và kích thước là 7x7. Cũng lưu ý trong hình ảnh thứ hai (đánh dấu) tôi tăng kích thước lên 9x9.

Tất cả những gì tôi đã làm để thực hiện điều này là điều chỉnh số cho vị trí bắt đầu và kết thúc vector2 của mỗi dòng để có được hình dạng đánh dấu.

Cách thay thế cho chỉnh sửa thủ công là tải xuống phiên bản miễn phí của 'Thiết kế biểu thức Microsoft 4'. Sau đó, bạn có thể tạo một hình ảnh mới ở kích thước mong muốn, sau đó sử dụng chức năng XUẤT KHẨU và chọn định dạng tệp XAML, sau đó kiểm tra tệp được tạo và lấy đường dẫn từ nó.

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