2011-12-09 42 views
5
<ListView x:Name="lstProductionOrders"> 
     <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Production Order:"/> 
         ... 

Tôi đã đặt phông chữ trên lưới, sử dụng textelement, tôi đã đặt nó trên listview, columnheader, thông qua các kiểu, thông qua các kiểu bằng cách sử dụng Dựa trên. Tôi thậm chí đặt trong một cửa sổ thử nghiệm hoàn toàn mới mà không có mã nào khác trong nó, nhưng mã mặc định và một listview được tạo theo cùng một cách ở trên. Sử dụng tất cả những điều trên, phông chữ thay đổi trong thời gian thiết kế nhưng không phải trong thời gian chạy.Tôi không thể thay đổi phông chữ trên các mục Listview hoặc các tiêu đề cột

Tôi chỉ có khoảng 6 tháng kinh nghiệm WPF/XAML, vì vậy tôi có thể đang tìm kiếm điều sai. Có một số loại thiết lập toàn cầu cho phông chữ hoặc bất cứ điều gì bất cứ ai có thể nghĩ rằng sẽ gây ra điều này để được ghi đè.

Đối với bản ghi, tôi có cửa sổ kiểm tra, không có lớp cơ sở.

---------- CHỈNH SỬA ----------

Đây là nguồn gốc của sự cố trong ứng dụng. XAML

<Style TargetType="TextBlock"> 
     <Setter Property="FontFamily" Value="Times New Roman"/> 
     <Setter Property="FontSize" Value="20"/> 
</Style> 

Trả lời

5

Điều này nghe rất nhiều như bạn có một phong cách ngầm cho GridViewColumn đó ghi đè lên những thay đổi bạn đã thực hiện tại địa phương.

Tại thời điểm thiết kế, phong cách tiềm ẩn đó không được tính đến (có thể vì nhiều lý do khác nhau), nhưng trong thời gian chạy nó là, và bạn nhận được hành vi kỳ lạ đó.

Tôi sẽ bắt đầu bằng cách xem phần Tài nguyên của App.xaml, sau đó di chuyển lên trên cho đến khi tôi tiếp cận được kiểm soát mà tôi quan tâm.

Addition: phong cách tiềm ẩn:

<UserControl> 
    <UserControl.Resources> 
     <Style TargetType="TextBlock"> 
     <Setter Property="FontSize" Value="40" /> <!-- stupid value, just to make it obvious it changed something =) --> 
     </Style> 
    </UserControl.Resources> 
</UserControl> 

Nếu bạn đã bao giờ muốn xác định một phong cách ngầm tại địa phương mà không ghi đè lên một phong cách ngầm đặt cao lên chuỗi, bạn có thể làm điều này:

<UserControl> 
    <UserControl.Resources> 
     <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}"> 
     <Setter Property="FontSize" Value="60" /> <!-- ridiculous value, just to make it obvious it changed something =) --> 
     </Style> 
    </UserControl.Resources> 
</UserControl> 

Nó sẽ kế thừa phong cách tiềm ẩn tại chỗ và thêm thay đổi cho UserControl cục bộ.

+0

Rất tuyệt! Kiểu TextBlock được định nghĩa trong App.xaml với một bộ FontSize. Tôi chưa bao giờ nghĩ đến việc tìm TextBlock cho tiêu đề và mục Listview. Đề xuất tuyệt vời. Cảm ơn một lần nữa! – Yatrix

+2

Bạn cũng có thể xác định một kiểu ẩn khác cho TextBlock trong điều khiển cục bộ.Nó sẽ ghi đè lên kiểu thiết lập ngầm toàn cục trong App.xaml –

+0

Chết tiệt, anh bạn. Bỏ tất cả các loại kiến ​​thức về tôi. Tôi chỉ mới bắt đầu xem xét cách ghi đè điều đó. Cảm ơn một lần nữa. Ai sẽ nghĩ một Baboon sẽ biết rất nhiều về XAML. – Yatrix

4

Đối với tôi các công việc sau cho các hạng mục cả header và:

<ListView ItemsSource="{Binding Source={StaticResource Items}}" 
      TextElement.FontSize="16"> 
    <!-- ... --> 

Không có ý tưởng những gì có thể sai trong trường hợp của bạn mặc dù ...

1

nếu bạn muốn chỉ đặt tiêu đề kích thước, sau đó thử giải pháp này hoặc sử dụng @HB giải pháp

<ListView x:Name="lstProductionOrders" > 
    <ListView.View> 
     <GridView> 
      <GridViewColumn> 
       <GridViewColumnHeader TextElement.FontSize="16">Production Order:/GridViewColumnHeader> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

enter image description here

hy vọng điều này giúp

+0

Điều đó không hiệu quả. – Xcalibur37

+0

@ Xcalibur37 Làm việc như một sự quyến rũ! trên máy tính của tôi ™ (tôi đã cập nhật câu trả lời của mình với ảnh chụp màn hình) – punker76

+0

Xin lỗi vì đã gõ vào câu trả lời của bạn. Tôi không thể làm điều này để làm việc mà không trực tiếp đặt một TextBlock bên trong Nội dung của Tiêu đề GridViewColumn. Đây không phải là chưa từng có với GridView và DataGrid. Đó là một cái gì đó WPF cần phải làm tốt hơn. – Xcalibur37

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