ความหมายของ * (ดอกจัน) ใน XAML ColumnDefinition คืออะไร?


106

ความหมายของ * (ดอกจัน) ใน XAML ด้านล่างคืออะไร?

<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>

ถ้าความกว้างคอลัมน์ที่สองของฉันเป็นสองเท่าของความกว้างของคอลัมน์ที่หนึ่งและสามเป็นสามเท่าของแรกฉันจะใช้ Astrik ได้อย่างไร
Shashank

คำตอบ:


168

เมื่อคุณกำหนดคอลัมน์ในตาราง WPF คุณสามารถตั้งค่าความกว้างเป็นหนึ่งในสามค่าที่เป็นไปได้:

  • ความกว้างคงที่
  • Auto - คอลัมน์จะกว้างเท่าที่จำเป็นเพื่อให้พอดีกับเด็ก ๆ หรือ
  • * (star) ใช้พื้นที่ว่างที่เหลืออยู่

*จะนำหน้าด้วยหมายเลข (เริ่มต้นคือ 1 ถ้าจำนวนไม่ได้ระบุ) พื้นที่ว่างจะถูกแบ่งออกเป็นคอลัมน์ที่ติดดาวตามสัดส่วนของหมายเลขนำหน้า

หากคุณมีความหมายนี้

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

คอลัมน์แรกจะได้รับ 7% ของพื้นที่ทั้งหมดที่มีอยู่และคอลัมน์ที่สองจะได้รับ 93% ในทางกลับกันถ้าคุณมีคำจำกัดความนี้:

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

คอลัมน์แรกจะได้ 1/3 และ 2/3 ที่สองของพื้นที่ว่าง


ในกรณีเฉพาะของคุณที่ความกว้างของเส้นตารางเท่ากับ 354 และสัดส่วนของสองคอลัมน์คือ 40 และ 314 คุณจะได้ความกว้างของคอลัมน์ต่อไปนี้:

ความกว้างของคอลัมน์แรก = 40 / (40 + 314) * 354 = 40
ความกว้าง coulmn ที่สอง = 314 / (40 + 314) * 354 = 314

ความกว้างของดาวจะใช้ได้ดีที่สุดเมื่อความกว้างของเส้นตารางไม่คงที่ เมื่อปรับขนาดเส้นตารางแล้วคอลัมน์จะปรับขนาดตามสัดส่วนตามที่ระบุโดยความกว้างของดาว ในกรณีของคุณความกว้างของเส้นตารางได้รับการแก้ไขและคุณสามารถใช้คอลัมน์ความกว้างคงที่ได้อย่างง่ายดาย

หากคุณต้องการเค้าโครงที่คอลัมน์ที่สองมีความกว้างเป็นสองเท่าของคอลัมน์แรกและคอลัมน์ที่สามมีความกว้างเป็นสามเท่าของคอลัมน์แรกคุณต้องมีคำจำกัดความนี้:

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

หากความกว้างรวมของเส้นตารางเท่ากับ 300 คุณจะได้ความกว้างของคอลัมน์ 50, 100 และ 150 หากความกว้างรวมของเส้นตารางเท่ากับ 600 คุณจะได้ความกว้างของคอลัมน์ 100, 200 และ 300 และอื่น ๆ


3

อัตราส่วน 0.07 ต่อคอลัมน์ความกว้างดาวอื่น ๆ - กล่าวคือถ้า ColomnDefinition อื่นมีความกว้าง 0.14 คอลัมน์นั้นจะมีความกว้างเป็นสองเท่า = ทั้งหมดเกี่ยวกับการปันส่วน


1

สร้างขนาดคอลัมน์โดยใช้อัตราส่วน หากคุณมีคำจำกัดความอื่นเช่น<ColumnDefinition Width="0.03*"/>คอลัมน์แรกจะใช้พื้นที่ 70% และคอลัมน์ที่สองจะใช้พื้นที่ 30%


0

[.. ] ค่าที่แสดงเป็นสัดส่วนถ่วงน้ำหนักของพื้นที่ว่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.