Ý nghĩa của * (dấu hoa thị) trong XAML ColumnDefinition là gì?


106

Ý nghĩa của * (dấu hoa thị) trong XAML dưới đây là gì?

<ColumnDefinition Width="0.07*"/>
<Grid Height="100" HorizontalAlignment="Left" 
      Margin="102,134,0,0" 
      Name="grid1" VerticalAlignment="Top" 
      Width="354">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="40*" />
        <ColumnDefinition Width="314*" />
    </Grid.ColumnDefinitions>
</Grid>

nếu cột thứ hai của tôi Width là đúp của First Và Cột thứ ba Width là ba của Đầu tiên Rồi Làm thế nào tôi có thể sử dụng Astrik
Shashank

Câu trả lời:


168

Khi bạn xác định một cột trong lưới WPF, bạn có thể đặt chiều rộng thành một trong ba giá trị có thể có:

  • Chiều rộng cố định,
  • Auto - cột sẽ rộng đến mức cần thiết để vừa với các cột con của nó, hoặc
  • * (dấu sao) chiếm bất kỳ dung lượng trống còn lại nào

Tiền *tố là một số (mặc định là 1 nếu không có số nào được chỉ định). Khoảng trống có sẵn được chia cho các cột có gắn dấu sao tương ứng với số tiền tố.

Nếu bạn có định nghĩa này

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.93*"/>
</Grid.ColumnDefinitions>

Cột đầu tiên sẽ nhận được 7% tổng không gian có sẵn và cột thứ hai sẽ nhận được 93%. Mặt khác, nếu bạn có định nghĩa này:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="0.07*"/>
  <ColumnDefinition Width="0.14*"/>
</Grid.ColumnDefinitions>

Cột đầu tiên sẽ chiếm 1/3 và 2/3 không gian có sẵn.


Trong trường hợp cụ thể của bạn khi chiều rộng của lưới là 354 và tỷ lệ của hai cột là 40 và 314, bạn sẽ nhận được các chiều rộng cột sau:

Chiều rộng cột đầu tiên = 40 / (40 + 314) * 354 = 40
Chiều rộng coulmn thứ hai = 314 / (40 + 314) * 354 = 314

Chiều rộng hình sao được sử dụng tốt nhất khi chiều rộng của lưới không cố định. Khi lưới được thay đổi kích thước, các cột sau đó sẽ chia tỷ lệ theo tỷ lệ được chỉ định bởi độ rộng dấu sao. Trong trường hợp của bạn, chiều rộng của lưới là cố định và bạn có thể dễ dàng sử dụng các cột có chiều rộng cố định.

Nếu bạn muốn một bố cục trong đó cột thứ hai gấp đôi chiều rộng của cột đầu tiên và cột thứ ba gấp ba lần chiều rộng của cột đầu tiên, bạn cần định nghĩa sau:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"/>
  <ColumnDefinition Width="2*"/>
  <ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>

Nếu tổng chiều rộng của lưới là 300, bạn sẽ có chiều rộng cột là 50, 100 và 150. Nếu tổng chiều rộng của lưới là 600, bạn sẽ có chiều rộng cột 100, 200 và 300. Và cứ tiếp tục như vậy.


3

Tỷ lệ 0,07 của nó so với bất kỳ cột chiều rộng sao nào khác - tức là nếu một ColomnDefinition khác có Chiều rộng bằng 0,14 thì cột đó sẽ gấp đôi chiều rộng = tất cả về khẩu phần


1

Nó tạo ra các kích thước cột bằng cách sử dụng tỷ lệ. Nếu bạn có một định nghĩa khác như <ColumnDefinition Width="0.03*"/>cột đầu tiên sẽ chiếm 70% không gian và cột thứ hai sẽ chiếm 30%.


0

[..] một giá trị được biểu thị bằng tỷ lệ trọng số của không gian khả dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.