グリッドの2番目の列で利用可能なスペースのサイズに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>
されるように、基本的に、私は行番号とValidationItemsプロパティに格納された複数ValidationItemError /警告を格納validationLineItemを有します。だから、私はグリッドの左の列にあるリストビューにそのデータをバインドするだけです。すべての
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Width"
Value="{Binding ElementName=GridCell, Path=Width}" />
</Style>
</ListView.ItemContainerStyle>
この部分を除いて細かいレンダリング
説明テキストブロックは、幅設定を無視し、私はそれがする必要があるように折り返されません。 I手動
<Setter Property="Width" Value="100" />
代わりに
<Setter Property="Width" Value="{Binding ElementName=GridCell, Path=Width}" />
Iが希望のようにラップテキストブロックの説明のように幅を設定した場合。 誰もが考えている?私はここで何か簡単なことがないと確信しています。
私はすでにこれも運が無かったのですが、私は注意してください。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
ない本当の答えは、私はコメントとして追加します。 listviewitemの幅をセルの代わりにグリッドにバインドしようとしましたか?また、それを試みる場合は、ActualWidthではなくWidthを使用してください。 HorizontalContentAlignmentではなく、HorizontalAlignmentを伸ばすように設定することもできます。それがうまくいけば、スヌープを使って、どの要素が正確にサイズ変更されていないかを調べることをお勧めします。スヌープでは、オンザフライで値を変更することもできます。ここで何が起こっているのかをさらにテストできます。 – dowhilefor