Ngôi sao WPF làm gì (Width = “100 *”)


Câu trả lời:


234

Trong WPF Grid, Width="*"hoặc Height="*"có nghĩa là định cỡ tỷ lệ.
Ví dụ: cho 30% cho cột 1 và 70% cho cột 2 -

<ColumnDefinition Width="3*" />
<ColumnDefinition Width="7*" />

nhập mô tả hình ảnh ở đây

Và tương tự như vậy đối với các hàng -

<RowDefinition Height="3*" />
<RowDefinition Height="7*" />

Các số không nhất thiết phải là số nguyên.
Nếu Chiều rộng cho Định nghĩa Hàng (Chiều cao cho Định nghĩa Cột) bị bỏ qua, thì 1 * được ngụ ý.
Trong ví dụ này, cột 1 rộng hơn 1,5 lần so với cột 2 -

<ColumnDefinition Width="1.5*" />
<ColumnDefinition />

Cột 1: 1,5 *, Cột 2 1 * (ngụ ý)

Bạn có thể kết hợp chiều rộng tự động phù hợp và cố định với chiều rộng * (tỷ lệ); trong trường hợp đó, các cột * được phân bổ cho phần còn lại sau khi tính toán chiều rộng tự động phù hợp và cố định -

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />  <!-- Auto-fit to content, 'Hi' -->
    <ColumnDefinition Width="50.5" />  <!-- Fixed width: 50.5 device units) -->
    <ColumnDefinition Width="69*" />   <!-- Take 69% of remainder -->
    <ColumnDefinition Width="31*"/>    <!-- Take 31% of remainder -->
</Grid.ColumnDefinitions>
<TextBlock Text="Hi" Grid.Column="0" />

nhập mô tả hình ảnh ở đây


30

Nếu bạn có 2 cột như thế này:

<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="*"/>

có nghĩa là cột đầu tiên rộng hơn cột thứ hai 10 lần. Nó giống như nói "10 phần cột 1 và 1 phần cột 2."

Điều thú vị về điều này là các cột của bạn sẽ thay đổi kích thước tương ứng. Các tùy chọn khác là:

//Take up as much space as the contents of the column need
<ColumnDefinition Width="Auto"/>
//Fixed width: 100 pixels
<ColumnDefinition Width="100"/>

Hy vọng rằng sẽ giúp!


8

chúng tôi lấy ví dụ sau .....

một lưới và có 3 cột và mỗi cột chứa một nút có kích thước 100.

nhập mô tả hình ảnh ở đây

Mã XAML là ...

    <Grid x:Name="LayoutRoot" Width="600">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button1" VerticalAlignment="Top" Width="100" />
    <Button Content="Button1" Height="23" HorizontalAlignment="Left" Margin="0,10,0,0" Name="button2" VerticalAlignment="Top" Width="100" Grid.Column="1" />
    <Button Content="Button2" Height="23" HorizontalAlignment="Left" Margin="0,10,0,0" Name="button3" VerticalAlignment="Top" Width="100" Grid.Column="2" />
</Grid>

Nhưng thực ra kích thước của nó là….

<Grid.ColumnDefinitions>
        <ColumnDefinition Width="375" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="125" />
</Grid.ColumnDefinitions>

Phần kết luận:

Tổng kích thước của lưới là 600

"Tự động": Cột được thay đổi kích thước với nó được chứa. (Cột thứ 2 có nút chiều rộng 100)

"*": Chiều rộng của cột thứ nhất là 3x của cột thứ 3.


3

Ngoài ra, bạn có thể bỏ dấu "*" nếu đó là phần tử của kích thước đơn vị. Vì vậy, sử dụng ví dụ mã của Pwninstein, nó sẽ chỉ là:

<ColumnDefinition Width="10*/>
<ColumnDefinition/>
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.