我在使用listviewitems將其大小設置爲網格第二列中的可用空間時遇到問題。我有一個ValidationItemError類可以有一個很長的描述。這是它的DataTemplate xaml。WPF ListViewItem寬度綁定不能按預期方式工作
<DataTemplate DataType="{x:Type Models:ValidationItemError}">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Ellipse Width="10"
Height="10"
Margin="5,0,0,0"
Fill="Crimson" />
<TextBlock Text="{Binding ColumnName}"
Grid.Column="1"
FontWeight="Bold" />
</Grid>
<TextBlock Text="{Binding Description}"
ToolTip="{Binding Description}"
Margin="20,0,0,0"
TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
的validationItemErrors分爲另一個類ValidationLineItem這就是它的DataTemplate
<DataTemplate DataType="{x:Type Models:ValidationLineItem}">
<StackPanel>
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="35"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="Line"
FontSize="16"
FontWeight="Bold" />
<TextBlock Text="{Binding LineNumber}"
Margin="5,0,0,0"
FontSize="16"
Grid.Column="1" />
</Grid>
<ItemsControl ItemsSource="{Binding ValidationItems}">
</ItemsControl>
</StackPanel>
</DataTemplate>
所以基本上我有一個validationLineItem存儲存儲在ValidationItems財產的行號和多ValidationItemError /警告。所以現在我只是將這些數據綁定到網格左列的列表視圖。
,除了這部分
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Width"
Value="{Binding ElementName=GridCell, Path=Width}" />
</Style>
</ListView.ItemContainerStyle>
的描述文本塊忽略寬度設置,不換行,就像我需要它來呈現所有罰款。 如果手動設置像
<Setter Property="Width" Value="100" />
代替
<Setter Property="Width" Value="{Binding ElementName=GridCell, Path=Width}" />
正文塊包裝,因爲我想描述的寬度。 任何人有任何想法?我相信我在這裏錯過了一些簡單的東西。
我應該注意到,我已經嘗試過,也沒有運氣。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
不是一個真正的答案,所以我將其添加註釋。你有沒有嘗試將listviewitem的寬度綁定到網格而不是單元格?此外,如果你嘗試,使用ActualWidth而不是寬度。您還可以嘗試將HorizontalAlignment設置爲不拉伸HorizontalContentAlignment。如果這沒有幫助,我會建議使用Snoop來檢查哪個元素沒有按預期調整大小。 Snoop還允許您即時修改數值,您可以在其中進一步測試發生了什麼。 – dowhilefor