2011-08-03 6 views
0

次のコードのためのDataTemplateを使用するには例外がスローされます:WPF - どのようtreeViewItems

<TreeView 
      ItemsSource="{Binding TreeRootInstance}" 
      x:Name="Htree" 
      ItemTemplate="CellTemplate" 
      SelectedItemChanged="HTree_OnSelectedItemChanged" 
      KeyDown="HTree_KeyDown"> 

      <TreeView.Resources> 

      <DataTemplate x:Key="CellTemplate"> 
        <Border> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="auto"/> 
           <ColumnDefinition Width="auto"/> 
          </Grid.ColumnDefinitions> 

          <ToggleButton x:Name="Expander" 
             HorizontalAlignment="Right" 
             Focusable="False" 
             Grid.Column="1" 
             IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource AncestorType={x:Type vw:TreeViewItem}}}" 
             ClickMode="Press"/> 
          <TextBlock 
           Text="{Binding Name}" 
           Grid.Column="0" /> 


         </Grid> 
        </Border> 
        <DataTemplate.Triggers> 
         <DataTrigger Binding="{Binding Path=HasItems, RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}}" Value="False"> 
          <Setter TargetName="Expander" Property="Visibility" Value="Hidden"/> 
         </DataTrigger> 
        </DataTemplate.Triggers> 
       </DataTemplate> 



       <Style TargetType="{x:Type TreeViewItem}" x:Key="aa"> 
        <Setter Property="IsTabStop" Value="True"/> 
        <Setter Property="TabIndex" Value="0"/> 
        <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded,Mode=TwoWay}"/> 
        <Setter Property="ItemsSource" Value="{Binding Children}"/> 
        <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type TreeViewItem}"> 
          <StackPanel> 
           <Border Name="Bd"> 

           </Border> 
           <ItemsPresenter x:Name="ItemsHost" /> 
          </StackPanel> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsExpanded" Value="false"> 
            <Setter TargetName="ItemsHost" 
              Property="Visibility" 
              Value="Collapsed"/> 
           </Trigger> 

          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 


      <Style TargetType="{x:Type TreeView}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type TreeView}"> 
          <Border BorderBrush="{TemplateBinding BorderBrush}" 
            BorderThickness="{TemplateBinding BorderThickness}"> 

          </Border> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
        <Setter Property="ItemContainerStyle" Value="{StaticResource aa}" /> 
      </Style> 

      </TreeView.Resources> 
    </TreeView> 

(私は、コードの一部を省略しましたが、メインhirerchyがまだそこにある...) 例外はありますItemsControl.ItemTemplateのxaml解析例外です。

このコードを動作させる方法を教えてください。

おかげで、 李

+2

XamlParseExceptionの内部例外は何ですか? –

+0

"ItemsControl.ItemTemplate"が例外をスローしました – user429400

+0

なぜvw:プレフィックスがありますか?これは非標準のツリービューですか? –

答えて

2

あなたはリソースロケータとしてプレーンな文字列を使用することはできません、あなたはStaticResourceのマークアップ拡張機能のいずれかを使用する必要がある、すなわち、 ItemTempate="{StaticResource CellTemplate}"

+0

THanks、しかし今は別のタイプの例外を(同じ行に)取得しています - もう一度、xaml解析エラー、今回は "System.Windows.StaticResourceExtension"の値を指定すると例外がスローされました – user429400

+0

TreeView.Resourcesは、開いているTreeViewタグのすぐ下にあり、参照する前にすべてのリソースを宣言する必要があります。 – sellmeadog

2

ItemTemplateにラインを読んでください:

ItemTemplate="{StaticResource CellTemplate}" 
関連する問題