WPF Wrap面板不适用于具有内容模板绑定样式的单选按钮?

时间:2014-10-23 22:33:40

标签: wpf xaml

我是WPF的新手。我有WPF应用程序菜单中的单选按钮列表。我改变了单选按钮的样式,看起来像文本块作为子菜单。现在的问题是,当我试图在单选按钮中包装和图像和文本时,它没有显示它。但是,如果我删除我在单选按钮上添加的样式,使其外观和感觉像文本块,那么包装工作正常,但它的显示辐射按钮图标,我不需要。

请参阅以下代码:

<StackPanel.Resources>
<Style x:Key="RadioButtonMenuStyle" TargetType="RadioButton">
<Setter Property="Template">                      
<Setter.Value> 
<ControlTemplate TargetType="{x:Type RadioButton}"> 
<TextBlock Text="{TemplateBinding Content}"> 
<TextBlock.Style> 
<Style TargetType="{x:Type TextBlock}"> 
<Setter Property="Height" Value="36"/> 
<Setter Property="Foreground" Value="Black" /> 
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/> 
<Setter Property="TextWrapping" Value="Wrap"/> 
</TextBlock.Style> 
</TextBlock> 
</ControlTemplate> 
</Setter.Value> 
</Setter> 
</Style> 
</StackPanel.Resources>

------------------------------------------------------------------------

<RadioButton Name="rbttest" GroupName="rbtgroup" Background="{x:Null}" Style="   

{StaticResource RadioButtonMenuStyle}"  IsChecked="True">

<WrapPanel>
<Image Source="/WpfApplication1;component/Images/Test.ico" Width="16" Height="16"    
Margin="0,0,5,0" />
<TextBlock Text="Test" Foreground="Green" />
</WrapPanel>                    
</RadioButton>

templateBinding内容是否导致问题?

1 个答案:

答案 0 :(得分:0)

在您的模板中,您将TextBlock.Text绑定到RadioButton.Content,但您的RadioButton内容实际上是一个UI元素(WrapPanel)。

摆脱模板中的TextBlock并将其替换为ContentPresenter。您不需要在演示者上设置任何属性;它已经知道如何在模板化的父级上找到内容。