2011-08-10 52 views
0

我有一个UserControl,它是一个修改的toggleButton。
我已经为它添加了两个字符串属性,所以我可以在混合中更改(或绑定)它们,我希望在按钮切换时显示文本。即当选中时,显示一个字符串,未选中时 - 另一个。在UserControl中绑定contentPresenter的内容?

设置文本很好,并切换UserControl是好的,但我不知道如何设置contentpresenter的内容从触发器切换的属性。这里粗略看看代码:

<UserControl 
    x:Name="UserControl" 
    <UserControl.Resources> 
     <Style x:Key="BiTextToggleButtonWithBorder" TargetType="{x:Type ToggleButton}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ToggleButton}"> 
         <Grid> 
          <Path x:Name="path" 
           Data="M28,0.5 L28.071953,0.50129622 28.092436,0.5 115.90756,0.5 C117.89162,0.50000113 119.5,2.5147196 119.5,5.0000013 L119.61492,36.460156 119.61432,36.857203 C117.1338,37.367692 108.82679,39.239366 106.37993,47.492391 L44.667,47.5 28.092436,47.5 4.9999995,47.5 C2.5147185,47.5 0.5,45.485283 0.5,43 L0.5,21 0.51801485,20.64324 0.5,20.0835 C0.5,9.2678322 12.812169,0.50000072 28,0.5 z" 
           Stretch="Fill" 
          <ContentPresenter 
           x:Name="contentPresenter" 
           Content="{Binding}"/> 
         </Grid> 

         <ControlTemplate.Triggers> 
          <Trigger Property="IsChecked" Value="True"> 
           <Setter Property="Content" TargetName="contentPresenter" Value="{Binding whatgoeshere!?}"/> 
          </Trigger> 
          <Trigger Property="IsChecked" Value="False"> 
           <Setter Property="Content" TargetName="contentPresenter" Value="whatgoeshere!?"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 

        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </UserControl.Resources> 

    <Grid x:Name="LayoutRoot"> 
     <ToggleButton 
      x:Name="ToggleButton" 
      Style="{DynamicResource BiTextToggleButtonWithBorder}" 
      FontSize="18.667" 
      Foreground="{DynamicResource WhiteText}"/> 
    </Grid> 
</UserControl> 

我什至不能找到我想改变的属性。我之前对UserControl中的对象进行了类似的绑定,但没有在样式和控制器中进行绑定。

我缺少什么?

+0

你的弦乐队在哪里?它们是UserControl上的自定义依赖属性吗?资源?在DataContext的某个地方? – Rachel

+0

正确 - 他们是控制上的依赖属性 – DefenestrationDay

回答

0

您是否尝试将{Binding}更改为{TemplateBinding}? (MSDN documentation here

+0

这看起来很有前途,但我看不到如何在自定义控件上使用TemplateBinding .. 本文很好,但修改了一个标准Button:http:// devlicio .us/blogs/christopher_bennage/archive/2008/07/04/templatebinding-styles-and-templates.aspx – DefenestrationDay

+0

在您的模板中,将“{Binding}”替换为“{TemplateBinding}” –

+0

..该成员不被识别或无法访问。在一个普通的对象上它似乎工作正常,但不是我的UserControl – DefenestrationDay