首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTriggers in WinRT

DataTriggers in WinRT
EN

Stack Overflow用户
提问于 2012-10-25 19:51:37
回答 2查看 527关注 0票数 2

据我所知,DataTriggers在WinRT中不受支持。但是,如何解决这个问题呢?

我有一个模型,它实现了一个"Selected“属性,扩展了INotifyPropertyChanged。如果选中的是True,我想将按钮的边框更改为红色。我只是不知道如何将属性更改链接到触发状态更改。

模型

代码语言:javascript
复制
class MyObject : INotifyPropertyChanged
{
    public MyObject()
    {
        Selected = true;
    }

    private bool _selected;

    public bool Selected
    {
        get { return _selected; }
        set { _selected = value; OnPropertyChanged("Selected"); }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

XAML

代码语言:javascript
复制
<Grid>
    <Button Margin="131,97,171,124" Content="Hello!" DataContext="MyObject" d:DataContext="{d:DesignInstance local:MyObject}">
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <Border BorderThickness="1">
                    <Border.BorderBrush>
                        <SolidColorBrush Color="Aqua"/>
                    </Border.BorderBrush>
                    <StackPanel>
                        <TextBlock Text="{TemplateBinding Content}"/>
                        <TextBlock Text="{Binding Selected}"/>
                    </StackPanel>
                </Border>
            </ControlTemplate>
        </Button.Template>
    </Button>
</Grid>
EN

回答 2

Stack Overflow用户

发布于 2012-10-25 21:55:47

您可以使用简单转换器(IValueConverter)。然后将边框属性绑定到Selected属性中的ViewModel中:

代码语言:javascript
复制
<Border BorderBrush="{Binding Selected, Converter={StaticResource MyConverter}}">

当然,您需要将资源放在页面资源或应用程序资源字典中的某个地方:

代码语言:javascript
复制
<mynamespace:MyConverter x:Key="MyConverter"/>

然后在转换器中,检查该值是否为True,并返回一个红色彩刷。

(我只是快速地写了这个,没有测试,但是你也可以在谷歌上搜索如何轻松地完成这个任务)

票数 1
EN

Stack Overflow用户

发布于 2012-10-27 06:21:08

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

https://stackoverflow.com/questions/13076146

复制
相关文章

相似问题

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