首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资源1工作,2不工作

资源1工作,2不工作
EN

Stack Overflow用户
提问于 2012-04-11 19:41:28
回答 1查看 92关注 0票数 0
代码语言:javascript
复制
<ToggleButton Command="{Binding Path=Command}" Content="{Binding Path=DisplayName}" Template="{Utilities:BindableResource {Binding Path=TemplateResource}}">
    <ToggleButton.Style>
        <Style TargetType="ToggleButton">
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Template" Value="{Utilities:BindableResource {Binding Path=SelectedTemplateResource}}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

第一个可绑定资源在togglebutton的模板属性上为"TemplateResource“工作,但是"SelectedTemplateResource”在tiggers中不工作。此代码位于资源分析器中,其中实际资源位于主题资源集中。

我收到一个错误,对于setter值来说,xamlparseexception键为null。我已经坚持了好几个小时了,但我弄不明白为什么不管用.如果我取出样式并将第一个绑定替换为第二个资源,那么它确实会正确显示,但是样式中的绑定将无法工作。

有人知道为什么吗?

编辑--我刚刚试过了,但没有成功。

代码语言:javascript
复制
                <ToggleButton Command="{Binding Path=Command}" Content="{Binding Path=DisplayName}">
                    <ToggleButton.Style>
                        <Style TargetType="ToggleButton">
                            <Style.Triggers>
                                <Trigger Property="IsChecked" Value="False">
                                    <Setter Property="Template" Value="{Utilities:BindableResource {Binding Path=TemplateResource}}" />
                                </Trigger>
                                <Trigger Property="IsChecked" Value="True">
                                    <Setter Property="Template" Value="{Utilities:BindableResource {Binding Path=SelectedTemplateResource}}" />
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </ToggleButton.Style>
                </ToggleButton>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 13:27:26

在发现这在纯xaml中是不可能的之后,我拿出了c#并创建了一个自定义控件.这是非常基本的,可以改进,我将对其进行一些更改,但最终一个自定义控件解决了这个问题,这样您就可以从资源字典中点击单击事件,并动态地更改模板。

代码语言:javascript
复制
public class TabButton : Button
{
    public static readonly DependencyProperty SelectedTemplateProperty = 
        DependencyProperty.Register("SelectedTemplate", typeof(ControlTemplate), typeof(TabButton));

    public ControlTemplate SelectedTemplate
    {
        get { return base.GetValue(SelectedTemplateProperty) as ControlTemplate; }
        set { base.SetValue(SelectedTemplateProperty, value); }
    }

    public TabButton()
    {
        this.Click += new RoutedEventHandler(TabButton_Click);
    }

    ~TabButton()
    {

    }

    public void TabButton_Click(object sender, RoutedEventArgs e)
    {
        ControlTemplate template = (ControlTemplate)this.FindResource("Environmental Template Selected");
        (sender as TabButton).Template = template;
    }
}

干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10112798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档