C# 在treeview中切换按钮样式不起作用
我有一个带桶和零件的树视图。除了一个功能外,一切看起来都很棒。bucket上的属性(bool IsEditable)允许用户在该节点的树视图中打开或关闭编辑。但由于某些原因,当wpf在树视图中显示Bucket集合时,togglebuttons不会显示正确的文本 这是我的xaml:C# 在treeview中切换按钮样式不起作用,c#,wpf,xaml,treeview,C#,Wpf,Xaml,Treeview,我有一个带桶和零件的树视图。除了一个功能外,一切看起来都很棒。bucket上的属性(bool IsEditable)允许用户在该节点的树视图中打开或关闭编辑。但由于某些原因,当wpf在树视图中显示Bucket集合时,togglebuttons不会显示正确的文本 这是我的xaml: <Style TargetType="{x:Type ToggleButton}" x:Key="Editor"> <Style.Triggers>
<Style TargetType="{x:Type ToggleButton}" x:Key="Editor">
<Style.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="Edit"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="Done"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
<DataTemplate x:Key="HierarchialItemTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding BucketQty, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding PartNum}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DisplayBucket">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Sequence}"/>
<TextBlock Text=" "/>
<TextBlock Text="{Binding Description}"/>
<ToggleButton IsChecked="{Binding IsEditable}" Width="25" Style="{StaticResource Editor}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="EditBucket">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Sequence}"/>
<TextBlock Text=" "/>
<TextBox Text="{Binding Description}"/>
<ToggleButton IsChecked="{Binding IsEditable}" Width="25" Style="{StaticResource Editor}"/>
</StackPanel>
</DataTemplate>
<HierarchicalDataTemplate x:Key="TreeTemplate"
DataType="{x:Type domain:Bucket}"
ItemsSource="{Binding Parts}"
ItemTemplate="{StaticResource HierarchialItemTemplate}"
>
<ContentPresenter Content="{Binding}"
Style="{DynamicResource TreeNodeStyle}"/>
</HierarchicalDataTemplate>
<Style TargetType="{x:Type ContentPresenter}" x:Key="TreeNodeStyle">
<Setter Property="ContentTemplate" Value="{StaticResource DisplayBucket}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsEditable}" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource EditBucket}"/>
</DataTrigger>
</Style.Triggers>
</Style>
以上是window.resources。在网格中是
<TreeView x:Name="Buckets"
ItemsSource="{Binding Model.Job.Buckets}"
ItemTemplate="{StaticResource TreeTemplate}"
>
因此,无论出于什么原因,当我添加节点时,我都会得到一个带有切换按钮的bucket,但是切换按钮文本只显示最后添加的节点。如果单击切换按钮,文本将从上一个切换按钮中消失,并显示在刚刚单击的按钮中。其效果与此人的经历相似,但我不知道回答问题的人在说什么
有什么想法吗?您有两种选择(从最不引人注目到最引人注目): 1) 内容
2) 内容模板
3) 控制模板
您的方法不起作用的原因是TextBlock控件只创建了一次(即不作为模板的一部分创建-ControlTemplate
或DataTemplate
)