2012-01-31 79 views
2

我想在我的WPF应用程序对象的运行时添加一些图形项目。我的目标是在我的按钮周围添加一个圆圈(仅在运行时通过代码隐藏)并向我的ControlTemplate添加一个触发器。在运行时动态修改样式(添加触发器)

一切都很好,我在我的按钮圆圈显示了,但我的问题是:我不能创造任何触发,它说:

After a 'TriggerCollection' is in use (sealed), it cannot be modified. 

我的理解是,我不能修改样式时,它的渲染或使用通过别的东西。 我试图复制样式来修改新的,但我无法访问触发器。

我的目标是这样的:

<Style x:Key="Button_1" TargetType="{x:Type MyDLL:MyObject}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type MyDLL:MyObject}"> 
       <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="190" Height="140"> 
        .... 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="Property1" Value="True"> 
         <Setter.../> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

如果我我的风格复制到一个新的风格,我怎么能添加触发到控件模板?

如果我将我的ControlTemplate复制到一个新的ControlTemplate,那么新的ControlTemplate也是密封的。

我后面的代码创建了扳机是:

Trigger trigger = new Trigger { Property = DragModeProperty, Value = false }; 
Setter setter = new Setter { Property = VisibilityProperty, Value = Visibility.Collapsed, TargetName = "DRAG" }; 
trigger.Setters.Add(setter); 
Template.Triggers.Add(trigger); // THIS ONE CAUSE THE ERROR 
+0

任何评论将有用...谢谢 – mlemay 2012-02-01 14:43:49

回答

0

发现了它。 我只是在一个新的容器(网格)而不是我的按钮上创建我的触发器。 简单。

相关问题