TreeViewItem
には、アイコン、ヘッダー、およびデータの部分が複数含まれています。私は最後の部分を包み込むことなく包み込むようにしようとしています、そして、私は運がないです。ここでは、問題の実例です:TreeViewItemラップの一部を作成する
私は運で、私はスタックオーバーフローで見つけたいくつかのことを試してみました。
が
TreeView
の実際の幅に結合して列にグリッドにアイテムを入れて:私が見つけた3件の提案がありました。これは以下のXAMLで実装されていますが、役立たないようです。の水平スクロールを無効にします。これは、
ScrollViewer.HorizontalScrollBarVisibility = "Disabled"
で行いました。これも下のXAMLで実装しました。WrapPanel
で必要なものをラップします。私はこれを試みたが、結果が悪かった。私が全体でTreeViewItem
を包み込むと、コントロールするのが難しいラッピングができました(アイテム全体がラップされるので、すべての部分がラップされ、ひどいです)。私がちょうど所望のTextBlock
を1つに包んだとき、私は全く結果を得ませんでした。だから私はそれを取り出した。ここでは、レイアウトの実例だ<DataTemplate x:Key="BasicPropertyTemplate" DataType="{x:Type json:JProperty}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="{Binding RelativeSource={RelativeSource AncestorType=TreeView}, Path=ActualWidth}" /> </Grid.ColumnDefinitions> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="16" /> <ColumnDefinition Width="3" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="3" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="3" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Border Width="12" Height="12" HorizontalAlignment="Center" VerticalAlignment="Center" Background="{Binding Converter={StaticResource TypeToColorConverter}, ConverterParameter='Interior'}" BorderBrush="{Binding Converter={StaticResource TypeToColorConverter}}" BorderThickness="1" /> <TextBlock Grid.Column="2" Text="{Binding Name, Mode=OneWay}" /> <TextBlock Grid.Column="4" Text=": " /> <TextBlock Grid.Column="6" Text="{Binding Value, Converter={StaticResource StringFormatConverter}, Mode=OneWay}" TextWrapping="Wrap" /> </Grid> </Grid> </DataTemplate>
ので、あなたは
TreeViewItem
が構成されてどのように見ることができます:ここで
TreeViewItem
のために持っているテンプレートの基本的
、灰色部分はアイコン、緑色部分は項目間のスペーサ、青色部分はヘッダーとコロン(eこの質問に関するものとは無関係です)、赤い部分は実際の内容です。
私はラップしたい部分です。
がここTreeView
定義があります:
<TreeView
x:Name="JsonRoot"
Grid.Column="0"
ItemTemplateSelector="{StaticResource TreeViewTemplateSelector}"
Loaded="JsonRoot_Loaded"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
VirtualizingStackPanel.IsVirtualizing="True" />
私が何かシンプル間違ってやっているように感じるが、私はよく分かりません。 TextBlock
の幅を200などの任意の値に固定するだけで、これを達成する方法はありますか?
あなたが任意のカスタムツリービューまたはツリービューアイテムコントロールテンプレートを使用していますか? –
私は実際には動作するようになっていますが、デフォルトのツリーテンプレートを少し変更する必要があります。実際には非常に簡単で、ハードコードされたWidthsは必要ありません。 –